{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "4139ba7c-6234-47b8-8a37-35cd01efd51d",
      "metadata": {
        "id": "4139ba7c-6234-47b8-8a37-35cd01efd51d"
      },
      "source": [
        "Probabilistic Inverse Problem with Differentiable Simulations\n",
        "=======================\n",
        "\n",
        "This notebook will illustrate some of the concepts introduced in {doc}`probmodels-intro`, such as the training of score functions via log likelihoods, and what they look like in a clear and reduced problem. At the same time, the setup provides integration of a simple _differentiable simulator_ to illustrate the concept of physics-based diffusion modeling with the SMDP method from {doc}`probmodels-phys` [(full paper)](https://arxiv.org/abs/2301.10250). This approach combines physics and score matching along a merged time dimension to solve inverse problems. \n",
        "[[run in colab]](https://colab.research.google.com/github/tum-pbs/pbdl-book/blob/main/probmodels-sbisim.ipynb)\n",
        "\n",
        "## Toy Problem setup\n",
        "\n",
        "We'll consider a toy problem with quadratically decaying trajectories. The trajectories start at $1$ or $-1$ and approach $0$ as $t$ increases. \n",
        "The corresponding SDE is given by \n",
        "\n",
        "$$\n",
        "\\begin{align} \n",
        "    dx = - \\left[ \\lambda_1 \\cdot \\mathrm{sign}(x) x^2 \\right] dt + \\lambda_2 dw,\n",
        "\\end{align}\n",
        "$$ (eq:app_sde_1d)\n",
        "\n",
        "with $\\lambda_1 = 7$ and $\\lambda_2 = 0.03$. The corresponding reverse-time SDE is \n",
        "\n",
        "$$\n",
        "\\begin{align}\n",
        "    dx = - \\left[ \\lambda_1 \\cdot \\mathrm{sign}(x) x^2 - \\lambda_2^2 \\cdot \\nabla_x \\log p_t(x) \\right] dt + \\lambda_2 dw.\n",
        "\\end{align} \n",
        "$$\n",
        "\n",
        "Throughout the experiments, $p_0$ is a categorical distribution, where we draw either $1$ or $-1$ with the same probability. \n",
        "\n",
        "\n",
        "\n",
        "## Implementation Overview\n",
        "\n",
        "The implementation below comprises the data generation, network definition, training using the sliding window method, \n",
        "visualization of the learned score and inference using the probability flow ODE and the reverse-time SDE. \n",
        "The core algorithm for training and inference can be modified easily for different variants that are discussed in the paper."
      ]
    },
    {
      "cell_type": "markdown",
      "id": "3d365122-f676-425f-8445-39ceadfcbcd5",
      "metadata": {
        "id": "3d365122-f676-425f-8445-39ceadfcbcd5"
      },
      "source": [
        "\n",
        "This implementation uses quite a few packages, which we'll import first. We'll make use of `JAX` with `haiku` and `optax` as neural network libraries. For data generation and inference, we use `diffrax`:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "id": "0_JufNgq_mMQ",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "0_JufNgq_mMQ",
        "outputId": "88b5282d-d062-4d60-d26a-0bc533da4774"
      },
      "outputs": [],
      "source": [
        "try:\n",
        "    import google.colab  # only to ensure that we are inside colab\n",
        "    %pip install diffrax jax jaxlib scipy optax dm-haiku\n",
        "except ImportError:\n",
        "    print(\"This notebook is running locally, please make sure the packages above are installed\")\n",
        "    pass"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "id": "2b2f5417-4a94-4556-8bf5-62032524b3cf",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2023-11-06T11:30:08.345111900Z",
          "start_time": "2023-11-06T11:30:07.964962700Z"
        },
        "id": "2b2f5417-4a94-4556-8bf5-62032524b3cf"
      },
      "outputs": [],
      "source": [
        "import warnings\n",
        "warnings.filterwarnings('ignore')\n",
        "\n",
        "from diffrax import diffeqsolve, ControlTerm, Euler, MultiTerm, ODETerm, SaveAt, VirtualBrownianTree, WeaklyDiagonalControlTerm\n",
        "import diffrax as dfx\n",
        "\n",
        "import jax\n",
        "import jax.random as jr\n",
        "import jax.numpy as jnp\n",
        "import optax\n",
        "import haiku as hk"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "27e7d7cd-5416-4fa3-8fdb-cfa7efbe35c2",
      "metadata": {
        "id": "27e7d7cd-5416-4fa3-8fdb-cfa7efbe35c2"
      },
      "source": [
        "In addition to several widely used numpy and matplotlib libraries:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "id": "54c7274b-8d76-49a6-969b-3ddcfd844b35",
      "metadata": {
        "ExecuteTime": {
          "end_time": "2023-11-06T11:30:09.666859500Z",
          "start_time": "2023-11-06T11:30:09.626585300Z"
        },
        "id": "54c7274b-8d76-49a6-969b-3ddcfd844b35"
      },
      "outputs": [],
      "source": [
        "import math\n",
        "import numpy as np\n",
        "from tqdm import tqdm\n",
        "from scipy.interpolate import griddata\n",
        "from typing import Any, Callable, Iterable, List, Optional, Tuple, Union\n",
        "\n",
        "from matplotlib import pyplot as plt\n",
        "\n",
        "from mpl_toolkits.axes_grid1 import make_axes_locatable\n",
        "import matplotlib.gridspec as gridspec"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "98053033-3e70-45bd-9d95-f70e33557341",
      "metadata": {
        "id": "98053033-3e70-45bd-9d95-f70e33557341"
      },
      "source": [
        "## Physical System SDE\n",
        "\n",
        "Next we set up a lambda function for the SDE above with constants $\\lambda = 7$ and $g = 0.03$. "
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "id": "4b1fb59e-c9db-43a7-85e9-5e942d68ded6",
      "metadata": {
        "id": "4b1fb59e-c9db-43a7-85e9-5e942d68ded6"
      },
      "outputs": [],
      "source": [
        "g = 0.03\n",
        "lambda_ = 7\n",
        "physics_operator = lambda x: - jnp.sign(x) * x * x * lambda_"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "57212630-114c-4ff0-bb50-527f340842d5",
      "metadata": {
        "id": "57212630-114c-4ff0-bb50-527f340842d5"
      },
      "source": [
        "We use diffrax to solve the SDE with Euler steps"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "id": "d72ea998-672b-48d5-8eb2-a032f3696a5f",
      "metadata": {
        "id": "d72ea998-672b-48d5-8eb2-a032f3696a5f"
      },
      "outputs": [],
      "source": [
        "def r_process(initial_value, noise_scaling, seed):\n",
        "\n",
        "    initial_shape = (1,)\n",
        "    y0 = jnp.ones(shape=initial_shape) * initial_value\n",
        "\n",
        "    t0, t1 = 0.0, 10.0\n",
        "    drift = lambda t, y, args: physics_operator(y)\n",
        "\n",
        "    diffusion = lambda t, y, args: noise_scaling * jnp.ones(initial_shape)\n",
        "\n",
        "    brownian_motion = VirtualBrownianTree(t0, t1, tol=1e-3, shape=initial_shape, key=jr.PRNGKey(seed))\n",
        "    terms = MultiTerm(ODETerm(drift), WeaklyDiagonalControlTerm(diffusion, brownian_motion))\n",
        "    solver = Euler()\n",
        "    saveat = SaveAt(dense=True)\n",
        "\n",
        "    sol = diffeqsolve(terms, solver, t0, t1, dt0=0.01, y0=y0, saveat=saveat)\n",
        "\n",
        "    return sol"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "345a381f-f50a-4412-8e34-7a08ae2bcc11",
      "metadata": {
        "id": "345a381f-f50a-4412-8e34-7a08ae2bcc11"
      },
      "source": [
        "## Visualization of SDE paths\n",
        "We first set a *seed* for the SDE paths, and plot some example paths from the SDE."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 12,
      "id": "51f2a8e9-fdc6-4c3d-91e4-28b92f3153ec",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 408
        },
        "id": "51f2a8e9-fdc6-4c3d-91e4-28b92f3153ec",
        "outputId": "4fb644b4-2928-4b02-e2b0-ad3803c6b9ed"
      },
      "outputs": [
        {
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkUAAAGHCAYAAAC+tibjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABl+UlEQVR4nO3dd3xT1fsH8M9Nm6a7pbSUQkuBMsreKCAyBEQEAUVcKIhbcaHo18nSH35BUFxfJ+BgqKigIEoRRGXvTZltgUJLS/dI0+b8/nhM09JdGtKkn/frlVdu7k1unpwk9z733HPP0ZRSCkRERER1nM7eARARERHVBkyKiIiIiMCkiIiIiAgAkyIiIiIiAEyKiIiIiAAwKSIiIiICwKSIiIiICACTIiIiIiIAgKu9A6Cymc1mxMfHw8fHB5qm2TscIiIih6GUQkZGBho1agSdrnJ1QEyKarH4+HiEhYXZOwwiIiKHdebMGYSGhlbquUyKajEfHx8A8oX6+vqW+1yTyYS1a9diyJAh0Ov1VyO8OodlbFssX9tjGdsWy9f2qlLG6enpCAsLK9yXVgaTolrMcsrM19e3UkmRp6cnfH19+We0EZaxbbF8bY9lbFssX9urThlXpfkJG1oTERERgUkREREREQAmRUREREQAmBQRERERAWBSRERERASASRERERERACZFRERERACYFBEREREBYFJEREREBIBJEREREREAJkVEREREAJgUEREREQFgUkREREQEgEkREREREQAmRUREREQAmBQRERERAWBSRERERASASRERERERACZFRERERACYFBEREREBqONJ0a5du/DWW2/h1ltvRWhoKDRNg6Zp1V5fSkoKnn76aYSHh8NgMCA8PBzPPPMMUlNTay5oIiIisglXewdgTzNnzsTKlStrZF1JSUno1asXTpw4gebNm2PUqFE4dOgQ5s+fjzVr1mDLli0ICAiokfciIiKimlena4p69eqF1157DT///DPOnz8Pg8FQ7XU988wzOHHiBG699VZER0fj22+/xcGDB/Hkk0/i2LFjmDx5cg1GTkRERDWtTtcUvfjiizWynvPnz2Pp0qVwc3PDRx99BFdXa7HOmTMHy5YtwzfffIPZs2ejQYMGNfKeREREVLPqdE1RTfntt99gNpvRt29fBAcHF1tmMBgwYsQIFBQU4Ndff7VThERERFQRJkU1YN++fQCArl27lrrcMn///v1XLSYiIiKqmjp9+qymxMXFAQBCQ0NLXW6ZHxsba5P3P3wYGDbMBWlpQ5CYaJO3ICIicnpMimpAZmYmAMDT07PU5V5eXgCAjIyMctdjNBphNBoLH6enpwMATCYTTCZTma9LSQFiY/UAPJCUlI3AwKpET5Vl+Q7K+y6o+li+tscyti2Wr+1VpYyr8z0wKapFZs2ahenTp5eYv3bt2jITLgDIydEBGAEAWLRoJ9q2TbFViAQgKirK3iE4NZav7bGMbYvla3uVKePs7Owqr5dJUQ3w9vYGUPYXkJWVBQDw8fEpdz0vvfRSsUv309PTERYWhiFDhsDX17eCKBQADX5+12DYMDYVswWTyYSoqCgMHjwYer3e3uE4HZav7bGMbYvla3tVKWPL2ZaqYFJUA5o0aQIAOHv2bKnLLfPDw8PLXY/BYCi1ryS9Xl+JP5gCAJw54wK9nl+rLVXu+6DqYvnaHsvYtli+tleZMq7Od8AqhRrQqVMnAMDu3btLXW6Z37FjR5vFYBmd5OzZ6g9TQkREVJcxKaoBQ4cOhU6nw99//43Eyy7/MhqN+OWXX+Di4oJhw4bZLAbdv9/khQtMioiIiKqDSVEVfPDBB4iMjMRLL71UbH5ISAjuuusu5OXl4fHHH0d+fn7hshdeeAEXL17EuHHjbNqbtaUT7eRkm70FERGRU6vTjU9Wr16NmTNnFj7Oy8sDAFx77bWF81577TXcfPPNAGTQ1+joaJw/f77Eut59911s3boVP/zwAyIjI9G9e3ccOnQIBw8eRMuWLTFv3jybfhaDATAagbQ0m74NERGR06rTSdHFixexbdu2EvOLzrt48WKl1hUYGIjt27dj2rRpWLFiBX766ScEBwfjqaeewvTp0+Hv719TYZfK3R1ITwcyM3n6jIiIqDrqdFI0YcIETJgwodLPnzZtGqZNm1bm8oCAALz33nt47733rjy4KvL2VkhM1JCbe9XfmoiIyCmwTZGT8POT+3/PABIREVEVMSlyEvXry32RNt5ERERUBUyKnERwsHTeWFBg50CIiIgcFJMiJxEaKkmRUnYOhIiIyEExKXISzZoxGyIiIroSTIqcRKtWlikNmZn2jISIiMgxMSlyEu3aWacPH7ZfHERERI6KSZGTkL4h5RTa0aP2jISIiMgxMSlyElqRjqxPnrRfHERERI6KSZETOnPG3hEQERE5HiZFTkSnk9NnFy7YORAiIiIHxKTIibi4SFKUlGTnQIiIiBwQkyIn4upqBgCkpto3DiIiIkfEpMiJ6PUyxkdGhp0DISIickBMipyIu7skRTk5dg6EiIjIATEpciJeXiYAgNFo50CIiIgcEJMiJ+LtnQcAyM+3cyBEREQOiEmRE/H3lyqiggI7B0JEROSAmBQ5kYAAaUyklJ0DISIickBMipxIw4bZ9g6BiIjIYTEpciKNGmUWTmdmlvNEIiIiKoFJkRMJC7N2UHT8uB0DISIickBMipyIn19e4XR0tB0DISIickBMipyIiwsASCtr1hQRERFVDZMiJ6Npcs+aIiIioqphUuRkXF3lnjVFREREVcOkyMl4e8v9uXP2jYOIiMjRMClyMoGBcp+aatcwiIiIHA6TIicTHi4NrXNz7RwIERGRg2FS5GQ6dpSkiOOfERERVQ2TIifTr5+5cDo93Y6BEBERORgmRU6mXz/r9Pr19ouDiIjI0TApcjKentbpv/6yXxxERESOhkmRE5KerYH9++0bBxERkSNhUuSEPDzkPjbWvnEQERE5EiZFTqhePblPSrJvHERERI6ESZETatxY7rOy7BsHERGRI2FS5ITatJF7k8m+cRARETkSJkVOqFcv67TRaL84iIiIHAmTIifUv791evduu4VBRETkUJgUOaFmzazTGzbYLw4iIiJHwqTICbm6Apom07t22TcWIiIiR8GkyEkZDHJ/9Kh94yAiInIUTIqclKWvorNn7RsHERGRo6jzSVFOTg5ef/11tGrVCu7u7mjUqBEmTpyIc+fOVWk9TZs2haZpZd6OXuUqm8hIuc/IuKpvS0RE5LBc7R2APeXm5mLgwIHYunUrQkJCMHLkSMTExGDhwoVYtWoVtm7diubNm1dpnePHjy91vp+fX02EXGnDhkkja6WA8+eBkJCr+vZEREQOp04nRW+88Qa2bt2KXr16Ye3atfD29gYAzJs3D8899xwmTpyIP//8s0rrXLRoUc0HWg3DhgFTpsj0zz8Djzxi33iIiIhquzp7+iwvLw8ffPABAODDDz8sTIgAYPLkyejYsSM2btyIXQ56+VarVtbp1avtFwcREZGjqLNJ0aZNm5CWloaIiAh06dKlxPIxY8YAAH755ZerHVqNcHUFPD1leu9eu4ZCRETkEOrs6bN9+/YBALp27Vrqcsv8/fv3V2m9c+bMwcmTJ2EwGNCuXTuMHj0aQUFBVxZsNYWFAdHRQEKCXd6eiIjIodTZpCguLg4AEBoaWupyy/zY2NgqrfeFF14o9vjZZ5/F+++/j4kTJ1YjyivTu7ckRXl5cnNzu+ohEBEROYw6mxRlZmYCADwt55gu4+XlBQDIqOQ17bfccgsGDBiAbt26ISgoCKdOncKCBQswf/58PPjgg6hfvz5GjhxZ7jqMRiOMRUZwTU9PBwCYTCaYKhjy3rK86PNGjNCwcKF8xX/8YcKgQZX6KFSG0sqYag7L1/ZYxrbF8rW9qpRxdb6HOpsU1bT33nuv2ON27dph7ty5iIyMxMMPP4wXX3yxwqRo1qxZmD59eon5a9euLTN5u1xUVFThdGqqAcBQAMBHH8UiL+9QpdZB5StaxlTzWL62xzK2LZav7VWmjLOzs6u83jqbFFmuNiur0LKysgAAPj4+V/Q+DzzwAF599VVER0cjJiYGTZs2LfO5L730EiZPnlz4OD09HWFhYRgyZAh8fX3LfR+TyYSoqCgMHjwYer0egPRR9OCDCmazhri45hg2LPyKPktdV1oZU81h+doey9i2WL62V5UytpxtqYo6mxQ1adIEAHC2jHEwLPPDw68skdDpdIiIiEBiYiLOnz9fblJkMBhgsAxaVoRer6/0H+zy5wYEAElJwIkTOuj1dfZiwxpVle+Dqo7la3ssY9ti+dpeZcq4Ot9Bnd1LdurUCQCwe/fuUpdb5nfs2PGK3yslJQWAtZ3S1dS9u9xnZ0vP1kRERFS6OpsU9enTB35+fjh58iT2ltKRz/LlywEAI0aMuKL3OXToEKKjo+Hp6YlIy4BkV9Ett1ina0ln20RERLVSnU2K3NzcMGnSJADAE088UdiGCJBhPvbv349+/fqhW7duhfM/+OADREZG4qWXXiq2rl9//RXr168v8R779+/H7bffDqUUHnzwQbjZ4Zr4olecffvtVX97IiIih1Fn2xQBwKuvvop169Zh8+bNaNmyJfr27YvY2Fhs27YNQUFBWLBgQbHnJyUlITo6GucvOw+1fft2TJ8+HeHh4ejUqRM8PT1x6tQp7N69G/n5+ejfvz/eeuutq/nRCrVoIT1bZ2cDBw8CBQWAi4tdQiEiIqrV6mxNEQC4u7tjw4YNeO211+Dp6YkVK1YgNjYWEyZMwO7du9G8efNKrefGG2/ExIkT4evri02bNmH58uU4ceIErrvuOnz22WdYt24dPDw8bPxpSqdpwPXXy3RBAbBpk13CICIiqvXqdE0RAHh4eGDGjBmYMWNGhc+dNm0apk2bVmJ+r1690KtXLxtEVzNGjwZ++02mP/vMmiQRERGRVZ2uKaorBgywTrNPMSIiotIxKaoDWrQA/PxkOiEBOHfOvvEQERHVRkyK6gBNK34V2scf2y8WIiKi2opJUR1x443W6a+/tl8cREREtRWTojpi4EDrdGwscOaM/WIhIiKqjZgU1REREUDbttbHn39uv1iIiIhqIyZFdci4cdbpr76yXxxERES1EZOiOmTsWOt0TAywb5/dQiEiIqp1mBTVIRERQPv21scTJwJms/3iISIiqk2YFNUx991nnd69G1i40H6xEBER1SZMiuqY228v/vi554CkJPvEQkREVJswKapjmjYFrrvO+jgtDZg7127hEBER1RpMiuqgRx4p/vi994DUVLuEQkREVGswKaqDxowBAgKsj7OzgQ8/tF88REREtQGTojrI3R2YMKH4vLffluSIiIiormJSVEc9/HDxx6mp7OWaiIjqNiZFdVTr1sANNxSfN38+oJR94iEiIrI3JkV12NtvAy4u1senTgF//22/eIiIiOyJSVEd1rkz8OKLxee98IJdQiEiIrI7JkV13Guvyak0i23bgO3b7RcPERGRvTApquPc3WWoD12RX8LYsRwTjYiI6h4mRYRevYAZM6yPY2OB//3PfvEQERHZA5MiAgD85z/A9ddbHz//PMdEIyKiuoVJEQGQq9CWLrX2dJ2bC4wfb9+YiIiIriYmRVSoUSNg927AzU0e//qrnFo7dcq+cREREV0NTIqomPBwYPVq6+OtW4EWLYA33gDy8+0XFxERka0xKaISBg0Cli0DDAZ5rJRcut+3L7B/v31jIyIishUmRVSqO+4Azp4FunWzztu6FejUCbjnHmDFCkmQjEa7hUhERFSjmBRRmQIDgZ07gUcfLT5/yRJg9GhJkBo2BB5/HNizxz4xEhER1RQmRVSh//0P+OwzawPsolJTZXnXrnK12tmzwJEj0kj76FF2AklERI6DSRFVyoMPAnFxwA03lFzWs6fcf/UVEBYGtG0L3Hwz0KYNUK8eMHWqtEsiIiKqzZgUUaUFBwNRUcD8+dKv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KcN06PX6yv3B3Nwq/1yqNpaxbbF8bY9lbFssX9urTBlX5ztgQ+sa4O/vX5gY7dmzp8TyM2fOICkpCeHh4eXX+BAREZHdMCmqITfffDMAYPny5SWWWeaNGDHiqsZERERElcekqIoiIyMRGRmJc+fOFZv/9NNPw8XFBR9//DG2bt1aOP/48eN488034erqiqeffvpqh0tERESV5LBtimrC6NGjcf78eQBAfHw8AODzzz/Hb7/9BgAICQnBTz/9VOw1lsbdl1/q17p1a8yZMweTJ09G3759MXjwYLi5uWHt2rXIycnBe++9hxbsQ4iIiKjWqtNJ0Z49e0p0pnju3LnCWqDyGkWX5tlnn0WLFi0wZ84c/P333wCA7t2744UXXsDw4cNrJmgiIiKyiTqdFMXExFT5NUqpcpePGDGCbYeIiIgcENsUEREREYFJEREREREAJkVEREREAJgUEREREQFgUkREREQEgEkREREREQAmRUREREQAmBQRERERAWBSRERERASASRERERERACZFRERERACYFBEREREBYFJEREREBIBJEREREREAJkVEREREAJgUEREREQFgUkREREQEgEkREREREQAmRUREREQAmBQRERERAWBSRERERAQAcLV3AFQ2pRQAID09vcLnmkwmZGdnIz09HXq93tah1UksY9ti+doey9i2WL62V5Uytuw7LfvSymBSVItlZGQAAMLCwuwcCRERkWPKyMiAn59fpZ6rqaqkUHRVmc1mxMfHw8fHB5qmlfvc9PR0hIWF4cyZM/D19b1KEdYtLGPbYvnaHsvYtli+tleVMlZKISMjA40aNYJOV7nWQqwpqsV0Oh1CQ0Or9BpfX1/+GW2MZWxbLF/bYxnbFsvX9ipbxpWtIbJgQ2siIiIiMCkiIiIiAsCkyGkYDAZMnToVBoPB3qE4LZaxbbF8bY9lbFssX9uzdRmzoTURERERWFNEREREBIBJEREREREAJkVEREREAJgUObycnBy8/vrraNWqFdzd3dGoUSNMnDgR586ds3doDi07OxsrVqzAAw88gNatW8Pd3R1eXl7o1KkTZsyYgczMTHuH6HSSk5PRoEEDaJqGFi1a2Dscp3Px4kU8//zzaN26NTw8PBAQEICuXbtiypQp9g7N4e3YsQNjx45Fo0aNoNfr4e/vj759+2LhwoVVGmKiLtu1axfeeust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48rl5+er0aNHKwCqb9++Kisry94h1QmnT59mj9Y1bPHixQqA6tChg4qPjy+cv2fPnsJhKL777js7Rui4du3aVThG10cffVRs2ZYtW5SXl5cCoKKiouwUoeO6kmE+DAZDtYf50JTiEL6OKjc3F/3798e2bdsQEhKCvn37IjY2Ftu2bUNQUBC2bt3Ky0Graf78+XjmmWcAAKNHj4avr2+pz3v77bcRGBh4FSNzbjExMWjWrBkiIiJw4sQJe4fjNCZMmIAvv/wS/v7+6N27N3JycrB582YYjUY89NBD+PTTT+0dosOaMmVKYTvDdu3aoW3btoiPj8eWLVtgNpvx8MMP45NPPrFzlLXf6tWri3Vzsn37diilcM011xTOe+2113DzzTcXPn7mmWcwf/58eHp6YvDgwcjLy0NUVBSUUli+fDlGjRpV9UCqnEZRrZKdna1ee+01FRERodzc3FTDhg3VhAkT1JkzZ+wdmkObOnVqqSM2X347ffq0vUN1Kqwpsg2z2aw+/fRT1a1bN+Xp6am8vLxUr1691KJFi+wdmlP48ccf1ZAhQ1T9+vWVq6urqlevnhowYIBasmSJvUNzGAsXLqxwe7tw4cJSX2f5Xfv7+6uhQ4eqTZs2VTsO1hQRERERgQ2tiYiIiAAwKSIiIiICwKSIiIiICACTIiIiIiIATIqIiIiIADApIiIiIgLApIiIiIgIAJMiIiIiIgBMioiIiIgAMCkiIiIiAsCkiIioyhYtWgRN06BpGmJiYuwdDhHVECZFRERERGBSRERERASASRERERERAEBTSil7B0FE5Aj+/PNPDBgwoMLnbdiwAf3797d9QERUo1hTRERERATWFBERVVpWVhZOnz6NlStX4tVXXwUA/P7772jUqFGx5zVr1gxeXl72CJGIroCrvQMgInIUXl5eaN++PXbu3Fk4r1WrVmjatKn9giKiGsPTZ0RERERgUkREREQEgEkREREREQAmRUREREQAmBQRERERAWBSRERERASASRERUZVpmmbvEIjIBpgUERFVkbu7e+G00Wi0YyREVJOYFBERVVFISEjh9MmTJ+0YCRHVJPZoTURURV26dIG7uztyc3Px2muvQa/XIzw8HDqdHGc2btwYHh4edo6SiKqKY58REVXDiy++iNmzZ5e6bMOGDejfv//VDYiIrhhPnxERVcNbb72Fzz77DH379kVAQABcXFzsHRIRXSHWFBERERGBNUVEREREAJgUEREREQFgUkREREQEgEkREREREQAmRUREREQAmBQRERERAWBSRERERASASRERERERACZFRERERACYFBEREREBYFJEREREBIBJEREREREAJkVEREREAJgUEREREQFgUkREREQEAPh/0gVtpejKWQQAAAAASUVORK5CYII=",
            "text/plain": [
              "<Figure size 600x400 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "seed = 2022\n",
        "\n",
        "if 1:\n",
        "    # paths starting in 1.0\n",
        "    value_one = [r_process(1.0, g, seed+n) for n in range(0, 3)]\n",
        "\n",
        "    # paths starting in -1.0\n",
        "    value_minus_one = [r_process(-1.0, g, seed+n) for n in range(3, 6)]\n",
        "\n",
        "    fig, ax = plt.subplots(figsize=(6,4))\n",
        "\n",
        "    x = jnp.linspace(0,10,200)\n",
        "\n",
        "    for i in range(3):\n",
        "\n",
        "        sol = value_one[i]\n",
        "        ax.plot(x, jnp.diag(sol.evaluate(x)), color='blue')\n",
        "\n",
        "        sol = value_minus_one[i]\n",
        "        ax.plot(x, jnp.diag(sol.evaluate(x)), color='red')\n",
        "\n",
        "    ax.tick_params(axis='x', colors='black')\n",
        "    ax.tick_params(axis='y', colors='black')\n",
        "    ax.set_xlabel('t', size = 20)\n",
        "    ax.set_ylabel('x', size = 20)\n",
        "    ax.grid(True)\n",
        "    ax.tick_params(labelsize=15)\n",
        "\n",
        "    plt.xlim([-0.25, 10.25])\n",
        "    plt.ylim([-1.25,1.25])\n",
        "\n",
        "    plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "dcc8b7c2-88ff-487f-ad05-b1eb1c1056a8",
      "metadata": {
        "id": "dcc8b7c2-88ff-487f-ad05-b1eb1c1056a8"
      },
      "source": [
        "As promised, the trajectories start on either side (blue and red), and approach the zero line in a stochastic fashion.\n",
        "\n",
        "## Generate Training Data\n",
        "\n",
        "We generate a data set of 250 paths from $t=0$ until $t=10$ with $\\Delta t = 0.02$"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 13,
      "id": "eac6e362-d793-4c3c-93b8-8d32f2aa607c",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "eac6e362-d793-4c3c-93b8-8d32f2aa607c",
        "outputId": "8207a399-f83a-4c37-f315-8f407ccf9969"
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "100%|██████████| 250/250 [04:39<00:00,  1.12s/it]\n"
          ]
        }
      ],
      "source": [
        "import os.path\n",
        "import pickle\n",
        "\n",
        "if os.path.isfile('toy_example_data.p'):\n",
        "\n",
        "    with open('toy_example_data.p', 'rb') as file:\n",
        "\n",
        "        dataset = pickle.load(file)\n",
        "\n",
        "else:\n",
        "\n",
        "    dataset = []\n",
        "    x = jnp.linspace(0,10,500)\n",
        "\n",
        "    for n in tqdm(range(250)):\n",
        "        sol = r_process((-1) ** n, g, seed+n)\n",
        "        dataset.append(jnp.diag(sol.evaluate(x)))\n",
        "\n",
        "data = jnp.array(dataset)\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 14,
      "id": "1296e60f-14ad-4eef-b1ac-912503af99b3",
      "metadata": {
        "id": "1296e60f-14ad-4eef-b1ac-912503af99b3"
      },
      "outputs": [],
      "source": [
        "import pickle\n",
        "with open('toy_example_data.p', 'wb') as file:\n",
        "    pickle.dump(dataset, file)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "e60860e3-f61b-450b-a96b-8faf7c1c584e",
      "metadata": {
        "id": "e60860e3-f61b-450b-a96b-8faf7c1c584e"
      },
      "source": [
        "Next, we implement iterator functions for the dataset"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 15,
      "id": "a84904c0-78d5-47c8-a280-5d7e9f74a935",
      "metadata": {
        "id": "a84904c0-78d5-47c8-a280-5d7e9f74a935"
      },
      "outputs": [],
      "source": [
        "def _prepare_batch(batch):\n",
        "\n",
        "    batch_x = batch[:,::-1]\n",
        "    batch_t = jnp.linspace(0,10, batch_x.shape[1])[::-1]\n",
        "\n",
        "    return (batch_x, batch_t)\n",
        "\n",
        "def iterbatches(X, batch_size, shuffle=False):\n",
        "\n",
        "\n",
        "    def iterate(X, batch_size, shuffle=False):\n",
        "        n_samples = X.shape[0]\n",
        "\n",
        "        ids = np.arange(n_samples)\n",
        "        sample_perm = np.arange(n_samples)\n",
        "        if batch_size is None:\n",
        "            batch_size = n_samples\n",
        "        if shuffle:\n",
        "            sample_perm = np.random.permutation(n_samples)\n",
        "        batch_idx = 0\n",
        "        num_batches = math.ceil(n_samples / batch_size)\n",
        "        while batch_idx < num_batches:\n",
        "            start = batch_idx * batch_size\n",
        "            end = min(n_samples, (batch_idx + 1) * batch_size)\n",
        "            indices = range(start, end)\n",
        "\n",
        "            perm_indices = sample_perm[indices]\n",
        "            X_batch = X[perm_indices]\n",
        "            ids_batch = ids[perm_indices]\n",
        "\n",
        "            batch_idx += 1\n",
        "            yield X_batch\n",
        "\n",
        "    return iterate(X, batch_size, shuffle)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "258f7de7-8439-483a-bc22-f9c955c554c4",
      "metadata": {
        "id": "258f7de7-8439-483a-bc22-f9c955c554c4"
      },
      "source": [
        "Additionally, we implement iterator functions required for the score field visualization"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 16,
      "id": "9b05cdf5-8ffc-4302-a433-96e31341772c",
      "metadata": {
        "id": "9b05cdf5-8ffc-4302-a433-96e31341772c"
      },
      "outputs": [],
      "source": [
        "def _prepare_batch_grid(batch):\n",
        "\n",
        "    inputs = [np.split(x, x.shape[1], 1) for x in batch]\n",
        "\n",
        "    return inputs\n",
        "\n",
        "def iterbatches_grid(X, batch_size, shuffle=False):\n",
        "\n",
        "    def iterate(X, batch_size, shuffle=False):\n",
        "        n_samples = X.shape[0]\n",
        "\n",
        "        sample_perm = np.arange(n_samples)\n",
        "        if batch_size is None:\n",
        "            batch_size = n_samples\n",
        "        if shuffle:\n",
        "            sample_perm = np.random.permutation(n_samples)\n",
        "        batch_idx = 0\n",
        "        num_batches = math.ceil(n_samples / batch_size)\n",
        "        while batch_idx < num_batches:\n",
        "            start = batch_idx * batch_size\n",
        "            end = min(n_samples, (batch_idx + 1) * batch_size)\n",
        "            indices = range(start, end)\n",
        "\n",
        "            perm_indices = sample_perm[indices]\n",
        "            X_batch = X[perm_indices]\n",
        "\n",
        "            batch_idx += 1\n",
        "            yield ([X_batch])\n",
        "\n",
        "    return iterate(X, batch_size, shuffle)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "eb481328-018f-408d-8f65-7d5618ddb77f",
      "metadata": {
        "id": "eb481328-018f-408d-8f65-7d5618ddb77f"
      },
      "source": [
        "### Neural Network Setup\n",
        "\n",
        "This example employs a neural network $s_\\theta(x,t)$ parameterized by $\\theta$ to approximate the score. It's a simple multilayer perceptron with elu activations and five hidden layers with $30$, $30$, $25$, $20$, and then $10$ neurons for the last hidden layer.\n",
        "\n",
        "The neural network architecture is realized with `haiku`, using a stack of MLPs:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 17,
      "id": "b3de6c35-640e-4d38-bb26-5ba238d97ade",
      "metadata": {
        "id": "b3de6c35-640e-4d38-bb26-5ba238d97ade"
      },
      "outputs": [],
      "source": [
        "EPSILON = 1e-5\n",
        "\n",
        "def f(x, t):\n",
        "    t = jnp.log(t + EPSILON)\n",
        "    x = jnp.hstack([x, t])\n",
        "    net = hk.nets.MLP(output_sizes = [30, 30, 25, 20, 10, 1],\n",
        "                    activation = jax.nn.elu)\n",
        "    return net(x)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "9a98e325-e59c-4aec-92de-526e20005bb5",
      "metadata": {
        "id": "9a98e325-e59c-4aec-92de-526e20005bb5"
      },
      "source": [
        "The next cell initializes the parameters. The `forward_fn` will be our main handle to evaluate the network `f` later on."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 18,
      "id": "4836914b-6661-43e9-acfa-d84787beb02b",
      "metadata": {
        "id": "4836914b-6661-43e9-acfa-d84787beb02b"
      },
      "outputs": [],
      "source": [
        "init_params, forward_fn = hk.transform(f)\n",
        "rng = jax.random.PRNGKey(0)\n",
        "\n",
        "x_init = jnp.ones((10,1))\n",
        "t_init = x_init\n",
        "params = init_params(rng, x_init, t_init)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "3f78a2cc-b7a9-4d0e-9ea9-3c897056d5fc",
      "metadata": {
        "id": "3f78a2cc-b7a9-4d0e-9ea9-3c897056d5fc"
      },
      "source": [
        "We also define a function to evaluate the model and a function that implements the backpropagation and updating of parameters given the optimizer and model loss."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 19,
      "id": "5ee848c6-3f41-41c6-9def-9d04e5dfadc9",
      "metadata": {
        "id": "5ee848c6-3f41-41c6-9def-9d04e5dfadc9"
      },
      "outputs": [],
      "source": [
        "def create_eval_fn(forward_fn, params):\n",
        "    @jax.jit\n",
        "    def eval_model(t, x, rng=None):\n",
        "\n",
        "        res = forward_fn(params, rng, x, t)\n",
        "        return res\n",
        "    return eval_model\n",
        "\n",
        "def create_default_update_fn(optimizer: optax.GradientTransformation,\n",
        "                             model_loss: Callable):\n",
        "\n",
        "    @jax.jit\n",
        "    def update(params, opt_state, batch, rng) -> Tuple[hk.Params, optax.OptState, jnp.ndarray]:\n",
        "\n",
        "        batch_loss, grads = jax.value_and_grad(model_loss)(params, rng, *batch)\n",
        "        updates, opt_state = optimizer.update(grads, opt_state)\n",
        "        new_params = optax.apply_updates(params, updates)\n",
        "        return new_params, opt_state, batch_loss\n",
        "    return update"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "4c92e77d-3f0c-4696-867c-272b787abdb5",
      "metadata": {
        "id": "4c92e77d-3f0c-4696-867c-272b787abdb5"
      },
      "source": [
        "Finally, we implement the ODE solver for the probability flow ODE using Euler steps. \n",
        "Given an initial state and ground truth (**x_train**) as well as time discretization (**t_train**), it computes the L2 loss:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 20,
      "id": "28b435b0-7cee-4640-982d-446586f4aefd",
      "metadata": {
        "id": "28b435b0-7cee-4640-982d-446586f4aefd"
      },
      "outputs": [],
      "source": [
        "def gradient_fn(forward_fn, physics_operator, g):\n",
        "\n",
        "    @jax.jit\n",
        "    def model_loss(model_weights, rng, x_train, t_train):\n",
        "        x = x_train[:,0]\n",
        "        i = 1\n",
        "        loss = 0.0\n",
        "\n",
        "        for t1, t0 in zip(t_train, t_train[1:]):\n",
        "            delta_t = t1-t0\n",
        "            physics_update = physics_operator(x)\n",
        "\n",
        "            # note that we absorb g**2 (constant) in the definition of forward_fn here\n",
        "            score_update = - 0.5 * forward_fn(model_weights, rng, jnp.expand_dims(x, axis=1),\n",
        "                                              jnp.repeat(jnp.tile(t1, 1)[None], x.shape[0], axis=0))[:,0]\n",
        "\n",
        "            x = x - delta_t * (physics_update + score_update)\n",
        "            x_true = x_train[:,i]\n",
        "            loss += jnp.mean(jnp.square(x - x_true))\n",
        "            i += 1\n",
        "\n",
        "        return loss\n",
        "    return model_loss"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "47c38a2c-0c63-49b9-9172-b5c2b369082d",
      "metadata": {
        "id": "47c38a2c-0c63-49b9-9172-b5c2b369082d"
      },
      "source": [
        "### Visualizing the Score Field\n",
        "\n",
        "While the problem itself is very clear, it's actually much less obvious what the score function underneath should look like. Hence, we'll show different version of score functions below, and the next cell implements a helper function that takes care of the visualization of the score field. \n",
        "We'll sample the score function on a regular grid to show it as an image, and hence first set up the corresponding grids."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 21,
      "id": "af9166a2-2e39-4f27-b806-59a5b81a4801",
      "metadata": {
        "id": "af9166a2-2e39-4f27-b806-59a5b81a4801"
      },
      "outputs": [],
      "source": [
        "x_ = np.linspace(0., 10., 400)\n",
        "y_ = np.linspace(-1.25, 1.25, 200)\n",
        "\n",
        "X, Y = np.meshgrid(x_,y_)\n",
        "full_domain = np.hstack((X.flatten()[:,None], Y.flatten()[:,None]))\n",
        "meshgrid = (X,Y)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "1dced7ca-2152-4805-8f49-6ea632b8fc57",
      "metadata": {
        "id": "1dced7ca-2152-4805-8f49-6ea632b8fc57"
      },
      "source": [
        "The following function `save_snapshot_score` plots a score function as an image."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 22,
      "id": "789bd5db-1076-4e96-9d1b-67406e36a1fa",
      "metadata": {
        "id": "789bd5db-1076-4e96-9d1b-67406e36a1fa"
      },
      "outputs": [],
      "source": [
        "dpi = 200\n",
        "height = 6\n",
        "width = 4\n",
        "scaling_factor = 1.\n",
        "\n",
        "def save_snapshot_score(params, forward_fn, meshgrid, step=None, savename=None):\n",
        "    eval_fn = create_eval_fn(forward_fn, params)\n",
        "    results = None\n",
        "    X, Y = meshgrid\n",
        "    full_domain = np.hstack((X.flatten()[:,None], Y.flatten()[:,None]))\n",
        "    full_domain_scaled = full_domain * scaling_factor\n",
        "\n",
        "    generator = iterbatches_grid(full_domain_scaled, 1000, shuffle=False)\n",
        "    for batch in generator:\n",
        "        inputs = _prepare_batch_grid(batch)\n",
        "\n",
        "        output_values = eval_fn(*inputs[0], rng)\n",
        "        if isinstance(output_values, jnp.ndarray):\n",
        "            output_values = [output_values]\n",
        "        output_values = [jax.device_get(t) for t in output_values]\n",
        "\n",
        "        if results is None:\n",
        "            results = [[] for i in range(len(output_values))]\n",
        "        for i, t in enumerate(output_values):\n",
        "            results[i].append(t)\n",
        "\n",
        "    final_results = []\n",
        "    if results is not None:\n",
        "        for r in results:\n",
        "            final_results.append(np.concatenate(r, axis=0))\n",
        "\n",
        "    x_scaled = x_ * scaling_factor\n",
        "    y_scaled = y_ * scaling_factor\n",
        "    meshgrid_scaled = (meshgrid[0] * scaling_factor, meshgrid[1] * scaling_factor)\n",
        "\n",
        "    fig, axes = plt.subplots(nrows = 1, ncols=1, figsize=(height,width))\n",
        "    fig.set_dpi(dpi)\n",
        "\n",
        "    ax = axes\n",
        "    u_pred = final_results[0][:].flatten()\n",
        "    U_pred = griddata(full_domain_scaled, u_pred.flatten(), meshgrid_scaled, method='cubic')\n",
        "\n",
        "    vmax = 75\n",
        "    h = ax.imshow(jnp.flip(U_pred / (g**2), axis=0), cmap='jet',\n",
        "                  extent=[ x_scaled.min(), x_scaled.max(), y_scaled.min(), y_scaled.max()],\n",
        "                  aspect='auto', vmin = -vmax, vmax = vmax)\n",
        "    cbar = fig.colorbar(h)\n",
        "    ax.set_xlabel(\"t\")\n",
        "    ax.set_ylabel(\"x\")\n",
        "\n",
        "    plt.figure(figsize=(10, 6)) # NT_DEBUG , test\n",
        "    if savename:\n",
        "        plt.savefig(f'{savename}.svg', transparent=True)\n",
        "    plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "d7f5ca77",
      "metadata": {},
      "source": [
        "Let's take a loot at the untrained score function `forward_fn`:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "id": "0a7c7693",
      "metadata": {},
      "outputs": [],
      "source": [
        "save_snapshot_score(params, forward_fn, meshgrid)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "5167f0d5",
      "metadata": {},
      "source": [
        "Not too surprisingly, it contains random but smooth transitions. Let's revisit it after a first training run."
      ]
    },
    {
      "cell_type": "markdown",
      "id": "a014b02c-6d8e-4172-8dc2-918a8f86eb91",
      "metadata": {
        "id": "a014b02c-6d8e-4172-8dc2-918a8f86eb91"
      },
      "source": [
        "## Training and Sliding Window Method\n",
        "\n",
        "Next we implement functions for network training. We implement the _sliding window_ method and corresponding training algorithm below. \n",
        "\n",
        "The sliding window method starts with window size **ROLLOUT_start**, which is increased by **ROLLOUT_add** every **steps** epochs for **ROLLOUT_increases** times. \n",
        "To reduce the number of points on a trajectory, we use subsampling (defined by **subsample**)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 23,
      "id": "5a02e2b5-056f-44b8-9844-7ad14084b848",
      "metadata": {
        "id": "5a02e2b5-056f-44b8-9844-7ad14084b848"
      },
      "outputs": [],
      "source": [
        "def update_network(params_, forward_fn, dataset, rng, steps = 20, ROLLOUT_increases = 18, max_training_time=None,\n",
        "                   ROLLOUT_start = 4, ROLLOUT_add = 2, lr=5e-4, bidirectional=False, subsample=5):\n",
        "\n",
        "    scheduler = optax.piecewise_constant_schedule( init_value=lr)\n",
        "\n",
        "    # Optax otimizer using Adam\n",
        "    opt = optax.chain(\n",
        "        optax.scale_by_adam(b1=0.9, b2=0.99),\n",
        "        optax.scale_by_schedule(scheduler),\n",
        "        optax.scale(-1.0))\n",
        "    opt_state = opt.init(params_)\n",
        "\n",
        "    # Define model loss and update for network parameters\n",
        "    model_loss_fn = gradient_fn(forward_fn, physics_operator, g)\n",
        "    grad_update = create_default_update_fn(opt, model_loss_fn)\n",
        "\n",
        "    avg_loss = 0\n",
        "    grad_updates = 0\n",
        "    ROLLOUT = ROLLOUT_start\n",
        "    history = []\n",
        "\n",
        "    # Iterate through all sliding window sizes\n",
        "    for _ in range(ROLLOUT_increases+1):\n",
        "        print('Window size: ', ROLLOUT)\n",
        "        pbar = tqdm(range(steps))\n",
        "\n",
        "        # Iterate through all epochs\n",
        "        for n in pbar:\n",
        "\n",
        "            # Iterate through data set\n",
        "            generator = iterbatches(dataset, 256, shuffle=False)\n",
        "            for batch in generator:\n",
        "                x_train, t_train = _prepare_batch(batch)\n",
        "\n",
        "\n",
        "                # Concentrate on specific parts of trajectory\n",
        "                if max_training_time is not None:\n",
        "\n",
        "                    x_train = x_train[:, -max_training_time:]\n",
        "                    t_train = t_train[-max_training_time:]\n",
        "\n",
        "                # Use subsampling to reduce number of points on trajectory\n",
        "                x_train = x_train[:, ::subsample]\n",
        "                t_train = t_train[::subsample]\n",
        "\n",
        "                # Iterate through trajectory\n",
        "                for t in range(x_train.shape[1]):\n",
        "\n",
        "                    # Select values based on position and window size\n",
        "                    x_train_sub = x_train[:, t:t+ROLLOUT]\n",
        "                    t_train_sub = t_train[t:t+ROLLOUT]\n",
        "\n",
        "                    # Compute loss for current part of trajectory\n",
        "                    params_, opt_state, batch_loss_backward = grad_update(params_, opt_state, [x_train_sub, t_train_sub], rng=rng)\n",
        "\n",
        "                    # Reverse values and time discretization for the forward time direction\n",
        "                    if bidirectional:\n",
        "                        params_, opt_state, batch_loss_forward = grad_update(params_, opt_state,\n",
        "                                                                             [x_train_sub[:,::-1], t_train_sub[::-1]], rng=rng)\n",
        "\n",
        "                    grad_updates += 1\n",
        "\n",
        "                    rng, _ = jax.random.split(rng)\n",
        "                    avg_loss += jax.device_get(batch_loss_backward)\n",
        "                    if bidirectional:\n",
        "                        avg_loss += jax.device_get(batch_loss_forward)\n",
        "\n",
        "                    history.append(batch_loss_backward+batch_loss_forward)\n",
        "\n",
        "            pbar.set_description(f'loss: {avg_loss/(n+1):.5f} grad updates: {grad_updates}')\n",
        "\n",
        "        ROLLOUT += ROLLOUT_add\n",
        "\n",
        "    return params_, history"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "0815459e-63ac-47df-bf99-8c00ad984a5d",
      "metadata": {
        "id": "0815459e-63ac-47df-bf99-8c00ad984a5d"
      },
      "source": [
        "### Single step loss \n",
        "We train the score network with the single step loss for 2500 epochs using the probability flow ODE (see Single steps, Section 3).\n",
        "Single step is realized here with a _sliding window_ of size 2, i.e. going one step forward in time for each sample. Increases of the unrolling are disabled via `ROLLOUT_increases=0` by default below. This speeds up training for default runs, but feel free to enable the increases in subsequent tests.\n",
        "We also use subsampling with factor 5 to reduce the number of points on the trajectory. After training, the resulting score function is visualized again."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 25,
      "id": "2a80d61a",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 793
        },
        "id": "2a80d61a",
        "outputId": "bf6be676-bc1e-498e-d74e-a15727577120"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Window size:  2\n"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "loss: 0.02322 grad updates: 250000: 100%|██████████| 2500/2500 [10:23<00:00,  4.01it/s]\n"
          ]
        },
        {
          "data": {
            "image/png": "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ogR+8IMf8JnPfKbkt31cffXVAFRVVfGrX/2qU0ABMHjwYK688koAVq9ezbRp00raH0mSJElSV62trZx11lkAfPSjH+XWW2/NGFAAXQIKgOuuu45IJALEbhlJDigA+vbty9SpUwGIRCJce+21xep+oAwpeqm1a9fyz3/+E4DDDz88Y9p37LHH0r9/rLrh3nvvDax/kiRJktRdVZVQXRXMq6oyd3966h//+AevvfYaABdffDFVVYVND9nW1sb9998PwPjx49l///3Tttt///3ZeeedAbj//vvpjTdOGFL0Us8++yybNm0CYPLkyRnb1dTUJL6Bn332WTZv3hxI/yRJkiRJMX/6058AqKio4DOf+Uxi+6pVq3jttddYtWpV1uPffPNNli1bBmQf/yXvX7p0KYsWLepBr8vDp3v0UnPnzk2sjx8/Pmvb8ePH849//INIJMJrr73GLrvskvd1lixZknX/8uXL8z6XJEmSJIVZPuOb7sxZ8fTTTwMwatQoGhsbueOOO7jiiis6PWp03LhxnHbaaZx77rnU1tZ2Or7Q8V/cvHnzEvMj9haGFL1UcniQ6/8kHRNbxiaCKSSkSD5WkiRJkoJQVQVVFQFdqw2IxtYnTpyYs32ht1C0trYyf/58IDZv4HnnnccNN9zQpd2CBQu48MILuffee3nwwQcZOHBgYl9Pxn+9jbd79FJr165NrPfr1y9r24aGhsT6unXrStYnSZIkSVJnH3zwAa2trQC8/PLL3HDDDQwdOpTbb7+dVatWsWHDBh5//PHEbfr/+te/+PrXv97pHFvT+M9Kil5q48aNifV0M78mSy4Vam5uLug6uZK35cuX55U2SpIkSVK+qvpAdUB/Uq9q7VifPXs2Q4cOLer5169fn1jfuHEjffv25dFHH01McAnw8Y9/nEceeYSPfexjvPTSS9x7770888wz7Lfffonj4ko5/gsDQ4peqq6uLrEen0Azk5aWlsR66mNqculNz1WWJEmSpJ4YOnRo0cdAyWM3gFNPPbVTQBFXX1/P5ZdfnphY8+67706EFEGN/8LAkKKXamxsTKznKuFJTu5ylQZJkiRJUrlVVcWqKQK5VmvuNj2RPHYDOOKIIzK2Peyww6iqqiISifDss8+mPceWPv5zTopeKjndy/UEjuRbNpwIU5IkSZKCU1tby3bbbZd4n21MVldXx+DBgwF47733Etu3pvGfIUUvlfyEjvhMsZnE91dVVTF27NiS9kuSJEmS1NlHPvKRxHo0Gs3aNr6/qqrjxofujP8AJkyYUFA/w8CQopfad999ExOmPP744xnbbdq0KfFM3n333Zfq6upA+idJkiRJ3VVdCdVVAb0qS/95Pv7xjyfW33jjjYzt1qxZw4oVKwAYPnx4Yvvo0aMZNmwYkH38B/DEE08kjh81alR3u1w2hhS9VGNjI4cddhgADz/8cMaSn7/85S+sWbMGgClTpgTWP0mSJElSzOc+97nE+r333pux3b333ktbWxsABx10UGJ7RUUFRx99NBCrlIj/ITrV008/naikOProo6moqOhx34NmSBFS06dPp6KigoqKCpqamtK2+da3vgVAJBLh7LPP7lI2tGLFCi6++GIABg4cyKmnnlrSPkuSJElSUVQG/Cqx3XffnU996lMA3Hnnnfzzn//s0ubtt9/me9/7HhB7zOjXvva1TvvPP/98KitjnT333HO7PF60ubmZc889F4jdKnL++ecX+2MEwqd7lMDMmTNZuHBh4n28XAdg4cKFTJ8+vVP7k08+uVvXOfTQQznhhBO46667+Otf/8onPvEJzj//fIYNG8bLL7/M5Zdfzn/+8x8ArrzySrbZZptuXUeSJEmS1DPXXXcdTz31FKtXr+Yzn/kM559/PkceeST19fXMnj2bK664IlEh/6Mf/ajT7R4A48aN48ILL+SnP/0pc+bMYdKkSVx88cXstNNOvP7661x55ZW88MILAFx44YW9dj7CirZ4LYmK5uSTT+a3v/1t3u3T/RNMnz49kZxddtllGaspmpub+fznP89DDz2Udn+fPn34/ve/n/H4nlqyZEnSjLHfAPqX5DqSJEmS8rEGuBaIPeUh+akQYZc8tlg8CEYEUOEAsCQKI1fG1kv9NZs5cyaf//zneeedd9Lur6io4JJLLuFHP/pR2v2tra2cdtpp/OY3v8l4jVNOOYWbb76ZPn16540TVlL0cvX19Tz44IPccccdTJ8+nZdeeonVq1czZMgQDjroIM455xw+9rGPlbubkiRJkpS/KgK5DQOAAKdtOPDAA/m///s/pk6dyn333cebb77Jpk2bGDp0KAcffDDnnnsue+65Z8bj+/Tpw6233srnPvc5br75Zp599llWrFjB4MGD2XfffTnjjDMSt5X0VlZSqEes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/etfs23bNjo7O6mvr2fWrFksWLCA8847j0WLFo34Gn/5y1+48847WbduHbt376a6upr58+fzqU99imXLljF1anFjBIUURXDeeefx9NNPT9j73XLLLdx6660MD6e/7Hd0dPDkk0/y5JNP8j//8z88/PDDBAKBCZtTQdqh098IvOP1TKRInOHErNS1hjCEzLYNe1WEvTrCrZIidUuGja1DzYqJ9CKY9daimLkqKcxQwh5S9FFFZF+9US0RCadDBrdqiEJCiyhkV0qYR2dIoWBCRERERA7c+vXrWbp0KTt27Mi4vmfPHvbs2cNLL73Ehg0bRgwp7r77br7whS/Q399vXUskEmzcuJGNGzdy3333sXbtWqZPn160P8eUor3yJJZMpjf0bWhoYNGiRVRXVxflvX70ox+xfPlyhoeHOeKII7j33nvZunUrjz76KKeffjoAa9eu5TOf+UxR3v+ARCFOyOtZSJFUkm7naMConmgkFVCYPR51LjezD6TOMabROA7Uwt6GAD2+GqtCoocaoqljhHoi1Fv3c123njtUQ7S3hkSkxggoOjHCBuetk/RjnY5bxHaMgtGesQfocLntSd3MkEJERERE5MCsW7eOs88+mx07dlBfX891113H7373O1588UU2btzI3XffzQUXXEAwGMz5Gr/5zW+48sor6e/vp7m5me9///v88Y9/5Le//S0f+9jHANi6dSuLFy9maGioaH8WVVIUwSc/+Uk++9nPcsIJJ3DkkUcCMHfuXKLRaJ5njk53dzfXXnstAIceeihbtmzJSLTOPfdcFi9ezOOPP86aNWu44oorWLhw4bjO4YC8ntrhgx15h0p5CJJa/DJ1NCsoZtdBpVkd4aiKyNihw15R0YCxOGYDDPghUldtVUWYrRvpionMdSac1+2tHj3U0N9Xxb7Oekj4obMisxrCXhVhr6SwV1DYxwDurRz2No4etK6EiIiIiBTDO++8wyc+8QkSiQT/9E//xO9+9zuam5szxixYsIBly5ZlVEjYDQwMcNVVVzE8PExtbS2bNm3iiCOOsB7/yEc+wuc//3l+8IMfsHHjRn72s59x6aWXFuXPo5CiCK644ooJeZ977rmHffv2AbBixYqskhufz8cPfvADfvOb3zA0NMTKlStLK6Rohw6a84+TkmdWTbiGE7kCCLeQIhVKEIBkU3q9iRhBIkxzDSnM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UhIUUoiIiIiIiIhISVBIISIiIiIiIiIlQSGFjNmOHTv4yle+wvz58wmHwzQ0NHDCCSewcuVKYrGY19OTMvH888/zX//1XyxatIjZs2fj9/uprq6mtbWVpUuXsnHjRq+nKAeJa6+9loqKCuv29NNPez0lKVP/+Mc/uPnmmzn++OOZMWMGgUCAOXPmcMopp3DTTTfxl7/8xespShno7+/nnnvu4cMf/jAzZ860/v47+uijWbp0Kc8++6zXU5QSsGfPHp544gluuukmPvrRjzJ9+nTr77FLL7101K/329/+lsWLF1ufuWbPns3ixYv57W9/O/6TFxmjimQymfR6ElJ+Hn/8cT796U+zf/9+18dbW1tZu3YtRx555ATPTMrJqaeeyoYNG/KOu+SSS7j77rupqqqagFnJwejll1/mhBNOYHBw0Lq2fv16Fi5c6N2kpCzdeeedXH/99fT29uYcc/XVV7Nq1aqJm5SUnR07dnDOOefw17/+dcRxV111Fd/73veoqKiYoJlJqRnpf/slS5awevXqgl5neHiYK664gnvvvTfnmGXLlvGjH/2IKVP079jiLf0Gyqi99NJL/Nu//Rv79++nurqab3zjGzz77LM89dRTXH755QC8+uqrnHPOOfT09Hg8Wyllu3fvBqClpYWrr76ahx9+mK1bt7J582a++93vMmvWLADuv//+Mf1rgQikP5gNDg7S1NTk9XSkjH3961/ni1/8Ir29vbS2trJy5UqefvppXnrpJdatW8fKlSv54Ac/qA/4MqKBgYGMgOJ973sfq1evZvPmzTz55JPcdNNNhMNhwAjFVqxY4eV0pYQceuihLFq0aEzPveGGG6yA4rjjjmPNmjVs3bqVNWvWcNxxxwFwzz33cOONN47bfEXGLCkySqecckoSSE6dOjX57LPPZj3+rW99KwkkgeTNN9888ROUsnHOOeckH3zwweTg4KDr4++8806ytbXV+n165plnJniGcjC44447kkBy/vz5yeuvv976fVq/fr3XU5Mysm7dOut355JLLkn29/fnHNvX1zeBM5Ny89BDD1m/SyeddJLr34HPP/98srKyMgkk6+vrkwMDAx7MVErBTTfdlHz88ceT7e3tyWQymdy+fbv1+7NkyZKCXuPvf/97curUqUkgefzxxydjsVjG4729vcnjjz/e+nz/2muvjfcfQ2RUFPXL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t9/O5z//eY9nJSJisLecmUGqm/3791tbdc+aNavo85LyYw+vBgcHRxw7MDDg+jyR0Zg3bx4tLS1A5udzN//7v/8LGP/9mjt3brGnJpKTQgoZlQsvvNC6f99997mOGR4e5v777wegvr6e008/fSKmJmUqFotxzjnn8OKLLwJwww03cO2113o8KylHq1evJplMjnizL6a5fv1667o+jMlIPv7xj1v3H3nkkZzjHnnkEWunhlNOOaXo85Ly09DQQG1tLQCbN28eMaiwf6GcN29e0ecmB6eKigqrdXbbtm1s2bLFddyWLVusSooLLrhA23eLpxRSyKiceOKJ1geve++9l82bN2eN+c53vsMrr7wCwNVXX01lZeWEzlHKR39/P4sXL2bTpk2A8fvy9a9/3eNZiYhket/73sdHP/pRANasWcNTTz2VNaa9vZ0bb7wRMLb5W7p06YTOUcrDlClTOOeccwBjHSb7jjB2e/fuzQjszz333AmZnxycvvSlL+Hz+QC46qqrsrYXjcfjXHXVVYBRtfOlL31poqcokkG1YzJq3/ve91iwYAHxeJxFixbx//7f/+P0008nHo/zwAMP8OMf/xgwFoT6yle+4vFspZRdfPHFPPnkkwCcccYZXHbZZRkLGzpVVVXR2to6UdMTEbGsWrWKzZs3E4lEOPfcc/nSl77E2WefTTAYZOvWrdx2223WonS33nqr2j0kp5tuuonHHnuMWCzGLbfcwgsvvMCSJUs4/PDDSSQSbNmyhVWrVvGPf/wDMHaNGWlXGTm4bdy4kddff906N1vKAF5//XVWr16dMf7SSy/Neo3W1lauueYabr/9dp5//nkWLFjAtddeyxFHHMEbb7zBihUreOmllwC45pprOOqoo4ryZxEpVEXSrEsUGYXHH3+cT3/60+zfv9/18dbWVtauXcuRRx45wTOTcjLaUsLDDjuMtra24kxGJoVbbrmF5cuXA0a7x8KFC72dkJSVjRs38q//+q90dHS4Pl5RUcENN9yQsSiriJt169Zx8cUXZ3zhdHPGGWfw8MMPM23atAmamZSaSy+9lJ/+9KcFj8/11W54eJjLL7/c2l3GzWWXXcaPf/xjpkxRsb14S7+BMibnnXce//d//8eXv/xlWltbCYVC1NfXc/zxx1tprAIKERE5mJx88sn89a9/5eabb+bYY4+ltraWQCDAvHnzWLp0KS+88IICCinImWeeybZt21ixYgULFy5kxowZVFZWEgwGmTdvHhdddBGPPvoo69atU0Ah42LKlCnce++9rF27lgsuuICWlhaqqqpoaWnhggsu4De/+Q333HOPAgopCaqkEBEREREREZGSoKhMREREREREREqCQgoRERERERERKQkKKURERERERESkJCikEBEREREREZGSoJBCREREREREREqCQgoRERERERERKQkKKURERERERESkJCikEBEREREREZGSoJBCREREREREREqCQgoRERERERERKQkKKURERERERESkJCikEBEREREREZGSoJBCREREREREREqCQgoRERERERERKQkKKURERERERESkJCikEBEREREREZGSoJBCREREREREREqCQgoRERERERERKQkKKURERERERESkJCikEBERmeRWr15NRUUFFRUVtLW1eT0dERERmcQUUoiIiIiIiIhISVBIISIiIiIiIiIlQSGFiIiIiIiIiJSEimQymfR6EiIiIjLxnn76aU4//fS849avX8/ChQuLPyERERGZ9FRJISIiIiIiIiIlQZUUIiIik1Rvby/bt2/nscce48YbbwTg97//PS0tLRnj5s2bRzgc9mKKIiIiMslM9XoCIiIi4o1wOMx73/tenn/+eetaa2src+fO9W5SIiIiMqmp3UNERERERERESoJCChEREREREREpCQopRERERERERKQkKKQQERERERERkZKgkEJERERERERESoJCChEREREREREpCQopREREJrmKigqvpyAiIiICKKQQERGZ9AKBgHW/r6/Pw5mIiIjIZKeQQkREZJKbOXOmdf+NN97wcCYiIiIy2U31egIiIiLireOOO45AIEAikeBrX/salZWVHHbYYUyZYvxbxqxZswgGgx7PUkRERCaDimQymfR6EiIiIuKta6+9lm9961uuj61fv56FCxdO7IRERERkUlK7h4iIiHD77bdz9913c8opp9DQ0IDP5/N6SiIiIjIJqZJCREREREREREqCKilEREREREREpCQopBARERERERGRkqCQQkRERERERERKgkIKERERERERESkJCilEREREREREpCQopBARERERERGRkqCQQkRERERERERKgkIKERERERERESkJCilEREREREREpCQopBARERERERGRkqCQQkRERERERERKgkIKERERERERESkJCilEREREREREpCQopBARERERERGRkqCQQkRERERERERKgkIKERERERERESkJCilEREREREREpCQopBARERERERGRkqCQQkRERERERERKgkIKERERERERESkJCilEREREREREpCQopBARERERERGRkqCQQkRERERERERKgkIKERERERERESkJ/x/Dhbkl1xaWzQAAAABJRU5ErkJggg==",
            "text/plain": [
              "<Figure size 1200x800 with 2 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "ROLLOUT_increases=0\n",
        "\n",
        "key = jax.random.PRNGKey(seed)\n",
        "params_single_step, history = update_network(params, forward_fn, data, key, steps = 2500,\n",
        "                                             ROLLOUT_start=2, ROLLOUT_increases=ROLLOUT_increases, bidirectional=True, lr=1e-3,\n",
        "                                             subsample=5)\n",
        "\n",
        "\n",
        "save_snapshot_score(params_single_step, forward_fn, meshgrid)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "a6275c68-6492-4ba0-a3c5-40b10055aaf3",
      "metadata": {
        "id": "a6275c68-6492-4ba0-a3c5-40b10055aaf3"
      },
      "source": [
        "This should look more meaningful than the initial random state! The two bands of trajectories from -1 and 1 should be visible. E.g., the blue region at the top indicates a large negative gradient, driving samples ending up in this  region down by a large distance, towards the correct trajectory in the positive region (as shown further above). Note that some parts, typically closer to the end time ($t=10$ on the right), can show sign changes and mostly random content again. This is caused by the network primarily being trained in the vicinity of samples it has seen in the training data. Far away from it, it has \"not learned\" how to properly transform samples into admissible ones.\n",
        "\n",
        "We also plot the training loss below, to show the training progressing for this first training step."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 26,
      "id": "ee888714-271d-4c45-93ee-3addc40e3938",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 449
        },
        "id": "ee888714-271d-4c45-93ee-3addc40e3938",
        "outputId": "51e3f8c8-6256-4bf7-8d8a-a3a695ab9903"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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pBsGLRPX0qDFIqVERET6Y9AycZaNzNFifiIiIpIeg5aJ41x4IiIi+TBomThDztEiIiIi3TBombjGhg61jV91hxg5X4uIiEg3DFomjnW0iIiI5MOgZeIaGzrUp3OKo5BERES6YdAycY3dgkdbarfg4dAhERGRThi0TJwF/8JERESy4cewiWtpjxYRERHpj0HLxCkYtIiIiGTDoGXiWpqzOC2LiIhIfwxaJo4T2ImIiOTDoEVEREQkEQYt0ho7x4iIiHSjV9DaunUr9u7dq/r9jTfegJOTEyZMmIBbt24ZrHHUci2eo8V0RUREpDe9gtaKFSvQvn17AEBERARCQkLw0UcfwdnZGa+++qpBG0gtw6BEREQkHyt9NkpNTUX//v0BALt378YzzzyDhQsXYuLEiZg8ebIh20dERETUZunVo2Vvb4/c3FwAwKFDh/Doo48CAGxtbVFaWmq41lGLtby8A7vEiIiI9KVX0Hr00Ufxwgsv4IUXXsD169fx2GOPAQCuXr2K3r17G7J9JJH5m8/hZk6xTtsIjkMSERHpRK+gFRISAh8fH2RnZ+Onn35Cly5dAADR0dF47rnnDNpAapmmstFbOy+3XkOIiIjMkF5ztJycnPC///2vwfLly5e3uEHUekoqq3Van7fzISIi0o1ePVoHDhzAqVOnVL+HhITA29sbzz//PO7du2ewxlHLNZmNtBgKrLsKhw6JiIh0o1fQev3111FQUAAAuHz5Ml577TU89thjSE5ORlBQkEEbSC3DbERERCQfvYYOk5OT4enpCQD46aef8MQTT2DFihU4f/68amI8ERERkbnTq0fL2toaJSUlAIAjR45g6tSpAIDOnTurerqIiIiIzJ1ePVoPPvgggoKCMHHiRJw9exahoaEAgOvXr6Nnz54GbSC1DOevExERyUevHq3//e9/sLKywo8//oh169ahR48eAID9+/dj2rRpBm0gtQznaBEREclHrx4td3d3/Prrrw2Wf/LJJy1uEBEREZGp0CtoAUB1dTV2796Na9euAQCGDh2KJ598EpaWlgZrHBEREVFbplfQSkxMxGOPPYY7d+5g0KBBAIDg4GD06tULe/fuRb9+/QzaSJKGNqOKanW0JGsJERGRadJrjtbLL7+Mfv36ITU1FefPn8f58+eRkpKCPn364OWXXzZ0G9uUkpISeHh4YMmSJXI3BQCLjBIREclJrx6t48ePIzIyEp07d1Yt69KlC1auXImJEycarHFt0Ycffojx48fL3QwiIiIyAnr1aNnY2KCwsLDB8qKiIlhbW7e4UW1VQkIC4uLiEBAQIHdTDEZwwJCIiEhvegWtJ554AgsXLsSZM2cghIAQApGRkVi0aBGefPJJvRuzcuVKKBQKvPLKK3rvQ5MTJ05g+vTpcHNzg0KhwO7duzWuFxISgt69e8PW1hbjxo3D2bNndTrOkiVLEBwcbIAWGw5jEhERkXz0ClqfffYZ+vXrBx8fH9ja2sLW1hYTJkxA//79sWbNGr0acu7cOXzxxRcYMWJEk+udPn0alZWVDZbHxsYiMzNT4zbFxcXw8vJCSEhIo/sNDQ1FUFAQli1bhvPnz8PLywv+/v7IyspSrePt7Y1hw4Y1+ElLS8OePXswcOBADBw4UMtnbPwupubh07AEuZtBRETUZuk1R8vJyQl79uxBYmKiqrzDkCFD0L9/f70aUVRUhNmzZ2PDhg344IMPGl1PqVQiMDAQAwYMwPbt21WlJOLj4+Hr64ugoCC88cYbDbYLCAhodjhv9erVWLBgAebPnw8AWL9+Pfbu3YtNmzbhzTffBADExMQ0un1kZCS2b9+OHTt2oKioCJWVlXBwcMDSpUube/pGa0bIabmbQERE1KZpHbSCgoKafPzYsWOqf69evVqnRgQGBuLxxx+Hn59fk0HLwsIC+/btw6RJkzBnzhxs27YNycnJ8PX1xcyZMzWGLG1UVFQgOjoab731ltqx/Pz8EBERodU+goODVcOGW7ZswZUrVxoNWSEhIQgJCUF1dbVe7ZUNxyGJiIh0onXQunDhglbrKXS8ud727dtx/vx5nDt3Tqv13dzccPToUTz00EN4/vnnERERAT8/P6xbt06n49aVk5OD6upquLi4qC13cXFBXFyc3vttTGBgIAIDA1FQUABHR0eD778uVncgIiKSj9ZBq26PlaGkpqbiH//4Bw4fPgxbW1utt3N3d8e2bdvw8MMPo2/fvti4caPOAU9K8+bNk7sJWmEIIyIikpZek+ENJTo6GllZWXjggQdgZWUFKysrHD9+HJ999hmsrKwaHVrLzMzEwoULMX36dJSUlODVV19tUTucnZ1haWnZYDJ9ZmYmXF1dW7RvIiIiMl+yBq0pU6bg8uXLiImJUf2MHj0as2fPRkxMjMb7Jubk5GDKlCkYMmQIdu7cibCwMISGhraoEru1tTVGjRqFsLAw1TKlUomwsDD4+PjovV8iIiIyb3rfVNoQOnbsiGHDhqkt69ChA7p06dJgOVATfgICAuDh4YHQ0FBYWVnB09MThw8fhq+vL3r06KGxd6uoqAiJiYmq35OTkxETE4POnTvD3d0dQM1k/7lz52L06NEYO3Ys1qxZg+LiYtVViG2VIQuOsngpERGRbmQNWrqysLDAihUr8NBDD6lVoPfy8sKRI0fQtWtXjdtFRUXhkUceUf1eewXl3LlzsWXLFgDArFmzkJ2djaVLlyIjIwPe3t44cOBAgwny5uJ0Yo7cTSAiImrzjC5ohYeHN/n4o48+qnH5yJEjG91m8uTJWt1cefHixVi8eHGz65mD+ZsbXgWqgPFccEBERNQWyDpHi1pBE/lS16FADh0SERHphkGLiIiISCIMWqQ1Dh0SERHphkGLtMahQyIiIt0Y3WR4arnyqmoci8sGAHS05Z+YiIhILvwUNkGFZVVY9E00AODbF8bJ3BoiIiLzxaFDIiIiIokwaBERERFJhEHLBNW9NlCLOq1aM+S+iIiIzAGDlonjlYJERETyYdAyQQqFNPWu4jIKJdkvERGRqWLQMmO6DgV+fDBemoYQERGZKAYtE8d5VURERPJh0DJBapPhZWsFERERMWiZOMEuLSIiItkwaJk4xiwiIiL5MGiZIIkuOiQiIiIdMWiZuia6tDiqSEREJC0GLROkALu0iIiIjAGDloljZXgiIiL5MGiZOA4PEhERyYdByxRx5JCIiMgoMGiZOH16tIQQqKhWGr4xREREZoZBywTVLe+gz8jh0bgsg7WFiIjInDFoUQN38krlbgIREZFJYNAycbwFDxERkXwYtEyQtjeVZgQjIiKSFoOWiWOHFhERkXwYtIiIiIgkwqBlghQS3VV63oTekuyXiIjIVDFomTzDjR3aWVsabF9ERETmgEHLBKlNhjfgHC1O9yIiItINg5aJa/KqQx1TGCfWExER6YZBixpgoCIiIjIMBi0TpHYLHoMOHTKBERER6YJBy8TpE44kumiRiIjI7DBomSAFtEtKOpeBYIcWERGRThi0TFxTQ4e8DyIREZG0GLRMnCGjFGMZERGRbhi0TBDnWBERERkHBi0DKykpgYeHB5YsWSJ3UwAYdniQQ41ERES6YdAysA8//BDjx4+XuxmSyCwol7sJREREbQqDlgElJCQgLi4OAQEBcjdFxZCdUD9fTDPczoiIiMyA7EFr3bp1GDFiBBwcHODg4AAfHx/s37/foMc4ceIEpk+fDjc3NygUCuzevVvjeiEhIejduzdsbW0xbtw4nD17VqfjLFmyBMHBwQZoMREREZkC2YNWz549sXLlSkRHRyMqKgq+vr6YMWMGrl69qnH906dPo7KyssHy2NhYZGZmatymuLgYXl5eCAkJabQdoaGhCAoKwrJly3D+/Hl4eXnB398fWVlZqnW8vb0xbNiwBj9paWnYs2cPBg4ciIEDB+p4BgyPk+GJiIiMg5XcDZg+fbra7x9++CHWrVuHyMhIDB06VO0xpVKJwMBADBgwANu3b4elpSUAID4+Hr6+vggKCsIbb7zR4BgBAQHNDuetXr0aCxYswPz58wEA69evx969e7Fp0ya8+eabAICYmJhGt4+MjMT27duxY8cOFBUVobKyEg4ODli6dGmDdUNCQhASEoLq6uom22QIvG0OERGRfGTv0aqruroa27dvR3FxMXx8fBo8bmFhgX379uHChQuYM2cOlEolkpKS4Ovri5kzZ2oMWdqoqKhAdHQ0/Pz81I7l5+eHiIgIrfYRHByM1NRU3Lx5E6tWrcKCBQs0hiwACAwMRGxsLM6dO6dXe3WhzxwtXlxIRERkGLL3aAHA5cuX4ePjg7KyMtjb22PXrl3w9PTUuK6bmxuOHj2Khx56CM8//zwiIiLg5+eHdevW6X38nJwcVFdXw8XFRW25i4sL4uLi9N6vXLS9BU9jfr3ESe9ERESGYBRBa9CgQYiJiUF+fj5+/PFHzJ07F8ePH280bLm7u2Pbtm14+OGH0bdvX2zcuFH3+/ZJaN68eXI3QUWf3qlzN+8ZviFERERmyCiGDq2trdG/f3+MGjUKwcHB8PLywqefftro+pmZmVi4cCGmT5+OkpISvPrqqy06vrOzMywtLRtMps/MzISrq2uL9i23pnIWhwiJiIikZRRBqz6lUonycs3FMXNycjBlyhQMGTIEO3fuRFhYGEJDQ1tUid3a2hqjRo1CWFiYWhvCwsI0zhUzdnU791jNnYiISD6yDx2+9dZbCAgIgLu7OwoLC/Hdd98hPDwcBw8ebLCuUqlEQEAAPDw8EBoaCisrK3h6euLw4cPw9fVFjx49NPZuFRUVITExUfV7cnIyYmJi0LlzZ7i7uwMAgoKCMHfuXIwePRpjx47FmjVrUFxcrLoKkYiIiEhXsgetrKwszJkzB+np6XB0dMSIESNw8OBBPProow3WtbCwwIoVK/DQQw/B2tpatdzLywtHjhxB165dNR4jKioKjzzyiOr3oKAgAMDcuXOxZcsWAMCsWbOQnZ2NpUuXIiMjA97e3jhw4ECDCfJtQd3ZauzPIiIiko/sQWvjxo06ra8pgAHAyJEjG91m8uTJWg2hLV68GIsXL9apPUaPSYuIiEg2RjlHi4iIiMgUMGiZoLqlLlgZnoiISD4MWiaOFx0SERHJh0HLBBlP6VYiIiLzxqBl4posWMphRSIiIkkxaJHBCSFwPbMQSiWDHBERmTcGLROkXhm+9Y+/5kgCpn5yAst+vtr6ByciIjIiDFomTo7hwU/DEgAA2yJvtfqxiYiIjAmDFhEREZFEGLRMkFodLU6TIiIikg2DloljziIiIpIPg5apY5cWERGRbBi0zBgzmG5KKqrkbgIREbUxDFomjlnKMNYcuQ7PpQcRdi1T7qYQEVEbwqBlomrnwzfVa6XgvXq0tuZITcmKpXtYG4yIiLTHoGXGjGXoMD6jEA9/fAy7L9yRuylEREQGxaBlotpSZ1XQDzG4lVuCV0Jj5G4KERGRQTFomThhLN1WTSirrJa7CURERJJg0DJxUsWsu8UV2HgqGfeKKyQ6AhERUdtnJXcDSBoKhQIQQrJ5WA+8fxgAsCfmDn5e/KA0ByEiImrj2KNl4qQeOLx0O1/iI5iGrMIyJGUXyd0MIiJqZezRMmNlVZwb1VrGfhgGADjzrylwcbCVuTVERNRa2KNlomqvOmxqMnzq3VKd91tVrdSzRQQAcRmFcjeBiIhaEYMW6WTpzyzYSUREpC0GLROlb9X3kGOJTT7+3ZkU/XbcBAVL1Ld5QggcupqB2/dK5G4KEZFRYdAycbpedfjxwXhpGmIi7uSVIr+0Uu5mGJ0DVzKwcFs0HvzPMbmbQkRkVBi0iHT0yeHrcjfB6ETeyG30sSt38vHK9gvs7SIis8SgZaIUv0+HF5IXeGi5vBLte4gKyiqx/3K6rNXk0/J0v4jAnD2x9hR2x6Qh8LsLcjeFiKjVMWiZuDZwBx7kFJVrve7Cr6Pw4rfnsfyXWAlbRFK4kcU6YkRkfhi0TNXv88vbQM7SSeSNuwCA78+mIOxapsytISIiahqDFrVZf9saJXcTiIiImsSgZeKkGDosrdB+flRiViF+jL7dZOFUIiIiU8Vb8JgoVWV4CQYPm6u1VZff6hMAgHaWCszw7mHwtsiBkZGIiLTFHi0CAFRWK7Fyf5xW6/5Ph6BV62Kq8d58OreoHE+sPYktp5PlbgoREZkYBi0Tp+2I3fdnU7D+eJJexzhxPRt5JRVNt8OI+4HWHk3ElTsFeFfLKxlbq4797Xsl+PRIAnJ1uCpTLtpW9//+bAr+tesylErjfT0QERkSg5aJ0uWuNnfySrHmSILex5qz6SxmhpzWe3tNqlvxg1jOmlxNmfVFJD45ch2vhMY0us6FlHv4y8YziMsoaL2GaVB3Dt7SPVc033xcAby18zK+O5OC8OtZrdg6IiL5MGgRfFeF425x0z1SzbmZW1P12xChZdG2aPT7174mq403paSiStLJ9wLAF8eT8Hl480Oo19ILkJKrX0X0O78XRo1IqjkPmp7TU5//hpMJOfjzV2f0OoYUvo64hZ/O325ynYLSqlZqDRGRvBi0TJSqMnwzgSO3qBzlVRp6H/T0j+26Vf/WNIR04GoGAOBPX0bqfPzErEJ4Lj2Ixd9LV4W8pKIKwfvj8NGBeNxrIqDmFJUj4NOTmPRxy+//dyw+C97vHcbB389Nw2O1LCi3VP2hw+xCDcOdHC0kIjPEoGXm/FYfN9i+KquVOHi1+SKiWQVlWH34Or46eQNzNp012PEBYNPpmwCAvZfSDbrfuqqq7yeGSk1DZL+7pWdPVn0CwPzN55BfWon/2xZtkH0SEVHrYHkHE9fcCNo9He4z2JyPDjR+1WLddszZdBZxGYWNrMduD5NVp9PLmC+OICIyJPZomSiFDLfg2XhKu/IIjYUsAGjpHPjmrgE4n3IPO5uZP9ScxppYUlGFUwk5TfZy6XU8hk8iojaLPVpkVKQOFU9//hsAwKOLHUZ5dNZvJ3WbWCfZLfw6GqcScxD4SD+87j9Y/0aaiKpqJapYxoGIzByDlolSVYZvY59zrdXc5JwS2Nu0w5s7LyGrQMc6VY10m51KzAEAfHsmBa/7D9apxIYpmrL6uMHmqRERtVUcOjRxrTkXpqnOi4NXM1BS0fwl/cp6yfB6ZuPDjC21cFsULqTkqcooaKupKw0BIM+A896MQU5RuearCJugUCgYsoiIwKBFrSQ9vwyeSw8i7FrTVyXW74F7To8SD9q4fa8EOTqGh1oJWUVqv1dVK5FVUKa2LMeA1dzl7JSsqlZi9AdHMObDIwYt7NrWelqJiPTFoGWiausaGdsH2t+2Rum0fm4LC6k2Zs2RBBRXGCY4zPoyEmNXhKktG/3BEZSUG2fFeV0U13kOTfXU7Y650xrNISJqcxi0TJyR5axmGVsw1Eb0rXsal6fea7tDZ+HxWXj5+wsoKGt+GDQlt6RBCKtba0wTc5+/RkTmg5PhTdyde7rNP5Jb/Tlaxk7RREGJt3ZebsWWGNa8zee0XldT5ftPjlxvsIzZiojMEXu0TFTth1pz95wzNi2NWW0rphm/jPyy5lfSEv82RGSOGLTIqDRWR6ussrrZq/2EEEjOLpaiWY0fU4b48PqOi61+TMCwz7WNdVy2mrLKanwenijp1bZE1LoYtExVGx2n0VQiYsOJGxj8zgGMfP9wk9uu3B+HiBu5ErWsEXoGhh1RqZi76SwKtZgDVT+U7Ii+rfFm3NT2rT2agI8OxGPqJyfkbgoRGQiDFhkXDfnhw33XtNr0ixM3DNyY5ukbd17/8RKOX8/Gl3q2uS3GrDaa/VvVpdv5cjeBiAyMQYuMir7DU7oWHTWUlg6BFZTqV9y0te5/2NzfIym7qMnHSTcWvByTyOQwaJmotvp2rU9+EEJg4sqjDZZfSy/AVydvoMrAN3lWO7ZMfUutddTm/h6B355vnYaYCUuLtvo/l4gaw/IOZFQyCnS/yq2xMBDw6UkANb0Ef32wT0uapfOxpdZax23qMGWV1YjL0G/SNifDa8YeLePy/q+xSMouwsa5YxiC66ioUmL/lXT49OuCbh1t5W6O0WOPlolStNE37INXM3Rav6CsstnenStpus17Ka+qufIrNq2g2XWlygspzdwnsLV60uoOUdYPR0eauZ1SfQVlzd/r0txZ8h3ZqGw8lYzw+GycTb4rd1OMyufhifjH9hhMX3tK7qa0CfxvTW3aiHcPIbOZXrBqHa/Q++pkMj46EI/HPjvZ7LpSzJX69VKaxiKg6sc1+GE1H6fOvxOyirDmyHUUldcEJl3PKzWPvSbGqUop3fSDtqj2S1ZmgeHu6WrKOHRIRkWfz+6wuKwmH98Tk4au9jb49xOeWu3vqg49YLoW9NTmY3SDDFdPNuZCSp7q33M3nQUA5BZV4P2Zw2RqkWnj0KFx4lA3tQR7tEyUod+vR7o7GXaHjZHoHe2rU8mS7PcP6yN0Wl8AWKPh9jR1aTPsK+etii7ezpPt2KaOPVpUX3ZhOY7FZ7F2XhvGHi3SSndHW1xohePo815ySMt5XT9GN387olu5xdh3Wbd5Yrqo7RVqSnF583OZ5PyGzW/30rFkjxbVM+W/4Sgoq8LHfxiBP47uJXdzSA/s0SKj8r9jiTpvczIhR6v1lmhx65qHPw5vsKy1albVqtIibRpD1jHEBRe5ReW4ldu6t00yZhbs0aJ6ai8iOdrMFAkyXgxaBlZSUgIPDw8sWbJE1nYY+u3anHsxpOyx/zrylobjNX/Af/54SYrmtLpRHxzBwx+HG/Tm1W0ZYxaR6WHQMrAPP/wQ48ePl7sZOpk/sbfcTTBa1UqBczelu7RbCOhVUHXv5XQJWiOf2HTeeoaorVDwK4FOGLQMKCEhAXFxcQgICJC7KToN62jzn8Zce7S+OJGEP30ZKekx6p9aYz/XtTW8Tms5ZEva4xQt42Tk/yXJyMketIKDgzFmzBh07NgR3bp1w8yZMxEfH2/QY5w4cQLTp0+Hm5sbFAoFdu/erXG9kJAQ9O7dG7a2thg3bhzOnm1+4nJdS5YsQXBwsAFa3Lo4LaRxW07flPwY9YOVvsVIzybf1WoifXMSMrWr9h4aldriY5E69hRQY6Ju3cOsLyIQl9F8IWUyLrIHrePHjyMwMBCRkZE4fPgwKisrMXXqVBQXa54ge/r0aVRWNrwRb2xsLDIzNVeqLi4uhpeXF0JCQhptR2hoKIKCgrBs2TKcP38eXl5e8Pf3R1bW/QmI3t7eGDZsWIOftLQ07NmzBwMHDsTAgQN1PAPya+5btLWlBRZM6ts6jTEyrfFNtv6cLH17tJ79IgKzvzrTorbczCnGo5+caNE+tMEeAjJ2dS+CMYbSCtmF5TiTfFerK5elJtc9Xtsq2cs7HDhwQO33LVu2oFu3boiOjsakSZPUHlMqlQgMDMSAAQOwfft2WFpaAgDi4+Ph6+uLoKAgvPHGGw2OERAQ0Oxw3urVq7FgwQLMnz8fALB+/Xrs3bsXmzZtwptvvgkAiImJaXT7yMhIbN++HTt27EBRUREqKyvh4OCApUuXNnsOpKDL9+LmiiRu+9tYjPLohL+M98A2DZO3TVlrX3FYc0z9t41JzWvRsS+k3mt2HUOckiU7LsKpfTvV7+zJqcGhQ+NRN1vN33ION1c+Ll9j6mhpNXYhhGpqiRACFdVK2FhZGqJp1AjZe7Tqy8+vmRTbuXPnBo9ZWFhg3759uHDhAubMmQOlUomkpCT4+vpi5syZGkOWNioqKhAdHQ0/Pz+1Y/n5+SEiQruClMHBwUhNTcXNmzexatUqLFiwoNGQFRISAk9PT4wZM0av9hpSO0tFs6lsXN8uAIBhPRxaoUXGpTW+yNbv0ZKzGGlrViZ/4eso1b/T88tkCbVERY0Mt5vi63Hh11GYGXJadfusxd9fwKB/H0B6fqlO++EXI90YVdBSKpV45ZVXMHHiRAwbpvkWH25ubjh69ChOnTqF559/Hr6+vvDz88O6dev0Pm5OTg6qq6vh4uKittzFxQUZGYYvXhkYGIjY2FicO3fO4PvWlUKh0PrD9ZkHekrcGuNTVlkt+THqhzk57yEo183I/7XrMl769rwsx27Lvjp5A09/fhqFZQ2nU1Djav9f/3AuFcOWHcTXETcbrGPo/4Wt8V7SnEOxmbh4O191m7G9l2quXg49x/mWUjKqoBUYGIgrV65g+/btTa7n7u6Obdu2ITQ0FFZWVti4caNsHxCazJs3D6tWrZK1Dc2dDo8udgCARwZ11XoyvJWlUb1cWkVJhfRvjkII/HIxDT/8/mbXuYO15MdszDYNHzitZf+VDPyWZN5XMur6NvbB3ms4n5LXKhdttEXJOcXIL1EPob8l5mDwOwfw30PxeOOnmnp0S/dcbbCtth1aEUm5CPj0JM6nND7s/mP0bQx+5wB+auTuFEIIZBZIV0vu4NUMBP0QU+d4kh2q1QkhcCdPtx651mY0n5yLFy/Gr7/+imPHjqFnz6Z7TjIzM7Fw4UJMnz4dJSUlePXVV1t0bGdnZ1haWjaYTJ+ZmQlXV9cW7dtYbV84Hv96bDA+esaL3cAyUyqBv39/AW/8dAlZBWUIGNZdtracu9n8HK2raQWITZPmyidtbpNkLnSpr1ZWJX9vibG5mVOMR1aFw+u9Q2rL3/2lJlStPdr0XSi0GcKvqFLiuQ2RuJZegOeaKANTe1eK13ZcxAtbo3AsXr3K+8oDcRi3IgzfnUlp9pj6+L9t0dh5/o7qdylyVnJOsSy98R8fjMfElUfx1ckbrX5sbcketIQQWLx4MXbt2oWjR4+iT58+Ta6fk5ODKVOmYMiQIdi5cyfCwsIQGhraokrs1tbWGDVqFMLCwlTLlEolwsLC4OPjo/d+5dTccGB3x/ZYOKkfHO3asbyDzE4l3u/FKSyvahN/j8c+OynJfhn67z//H6K0D52m1EOhCyEELqbmaRyWO1un0PBTn59GVmFNj1Fz743bz6Zg4ddRKK/SHHSPxWVhXXgSVu6Pw8B/71ctb2z9+o5cy8T8zerTRr44XhMSlv/SsGetNbT09fPDuVQ8sioc/9jeGnfEVfd5eBKAmt5dYyV70AoMDMQ333yD7777Dh07dkRGRgYyMjJQWtqwK1CpVCIgIAAeHh6qYUNPT08cPnwYmzdvxieffKLxGEVFRYiJiVFdNZicnIyYmBikpNz/9hAUFIQNGzZg69atuHbtGl588UUUFxerrkJsayx1+bTWYbxiro+HHq2hpgR+d39ukhCtMwHf2B2/nq2xXtCyPVfw1s7LMrSo9aUZ+XCIMfj2TApmhJxutuTBhZQ8fHSgpj5jc0HrzZ2XcSg2E9+e0XyF9fwt5/CfA3FYfzypwWOnE3Pwf9ui9B4GrFIKCCGarYdXWa3Es19E6B3MDD3Rv/Yetb9eMq07VhiK7EFr3bp1yM/Px+TJk9G9e3fVT2hoaIN1LSwssGLFCvz000+wtr4/j8XLywtHjhzBH//4R43HiIqKwsiRIzFy5EgANaFq5MiRalcFzpo1C6tWrcLSpUvh7e2NmJgYHDhwoMEE+bZCl6ClSx/CO0946t4Y0om2NWq0ebNMzy/FltPJjV5ZZWwUipqCqXM3ncW0Neq9ZsXlVdgacQvfn01BloTzWYyFEU07NVrf/F5u5kzy/d6rdeFJGie3F/1+c+a6741NvU1erFcqJT6jEK8002Mz+6szOHg1E2/vutJMyzWrVgq8s+cKhi47iOhbjd/6Kzw+G2eT72KznnPzGtyNQq+93GfI16oQAn///gI+Phin1/bJOcWYGXIah2M119WUg+x1tHRN1o8++qjG5bUhSpPJkydrdZzFixdj8eLFOrXHWOkStHS5pN8cJ8S3Nm17tLRZ7w/rInAnrxRX0wrw8R+9WtawVpKYVaRxeVW16Xf1MVxpVlZZDRsri2YvekrPL8V/DtR8QP/nmeFqj9VualHnvdHSQgFlI6+rg1fVP6hf/CYaN3I0F9KuryW9kd9E1oy0fHI4Ad+8ME7jOrsv3NG4XFvGPNR8ITUPv1xMAwC87j9Y5+1f+yEGMal5WPB1lNHUPuOnpomy1OEduy3MCTIXd4srcPx6tlbrajNZt/ZqnHAt9ym3H6Nv4/Y9zR9SVcr7c2AsWviizS+pxN5L6cgqLMOT/zuFL080HAYyF+uPJ2kcBjMWd/JKMfidA/BbfRy+/w3HgSuaS+6UVVarXSVc/4tI7VuiZZ2XTt0vpD80c0upm7nahSwAiE0vaHZieHNXyimFaLSDoHa+mf4a7vd6ZiHO3Mht4X5brqyFV3rnlRhfqRMGLROlU48Wk5bRmLPpTIMhi8boUti0Lf2FP9yneVJrVZ0PrpYWdZ2z+SwCvzuPsR+G4dLtfKzYF4fXfrjYon0aQt2/U/2nmFtUjso6VyLqclViYwrLKrFyfxxW7o9rUAbBWGyLqBkeTMouxo3sYiz6Jlr1WN0errVHE9S2S8/XHEbqvjfWvfjijR8vNTny4VDnTgbaaKrcQ83xmn69/ZaUi8mrwjU+1tIeqQbbC4Gpn5zArC8jkXq3pNnt63+PN+T7S4vnqBrhmx2DlomSaugQABxsZR9xNlllldp/eH7wq+ZAciohR+0DGWi7Q1KnEnJwNvku/FYfx5cn7l++Xdu5JYTAmz9dwsZTyTrtV1OY/em8cZWWqBsmb+YUY9QHRzB97SnVsq0Rut8OK7eoHMfis1T37qvTSdjmS0SEHEtC2LX7w32fhakHr9pQ1dTwY1O9ULqWLqj9P3iikd7ktLzme6Vu5WoOPVG3Goa4tLxSrdvY1FpfR9zE9LWnVEVNm3M1LR83G2mnPqrrvO5NpTo/g5aJ0iU86dqhZdNO//ti/WPKAL23JXWN3XfyzxvP4OOD8WrL2mrZhD9vPINnv4hAYlaRWpi6W1yB78+m4F+7LmP7uVS8/2ss9sTcaTAJOi2vFN+fTcEbP15EblHL7hHX2up+xOy9XHM1V1xGoWrZsbj7tZjOp9zT+KFUf1nApycxf/M51TBZ3Qsv6obzkooq5Jc27OESQuB6ZqFB6yUVllVqvAXM9cxC/Hv3ZZ2GyVbsa2ICtWrosImg1cQHe2GZfheUnG6kCK8hQ8SxuCxMWHkU/7ft/m2tmvobNXXoDSeTcflOPl7YGtX4SnU8/tmp5lf6XX5JJTaeSm7yb1r3C0ZLX2dbf7vZou0NhUHLRFlZStejRcav/htMY39iIQTO3MhFXkmF9I0yoMc+O4m3dl7G92fvz6v5x/YYLN1zFVfu5ONwbCYqqpSYsPIo3tp5GT9E3VZdCVbeTM9NQVklLjQSXKSwLeImVh++DkD971T38M39F428cbfBpfUXU/Pg/d5h1ZV5AJBVWBM2a6/IqvtBVvdiA6/lh+C1/BBKKu6Hi4oqJT4PT8LUT07gnT36XVUH1MylqntuR753GD7BRxuURHhi7Sl8E5miVmizPl3euWrXbaq3X9ny0dj7mnn53MwtwW+JhrkTwobfi3UeuVYTvv97KB7e7x3CzUYm72vz2r5bbPj3hKAfYvD+r7EN6oipqdO0poKvNpb9fBX/PRSv9jqWA4OWidIlPOmas+xtdBs6nDSwq+rfptER3PY09ifeezkds76MxGOfSlOAVA5PrD2FBV9HYc2R62rLL93Ow/Hr2Rj07wNNbv/4Zyfx1Oe/4anPf1PVM6qoUuKZdb/hvV9iDd7ed/ZcxWdhCVhz5LrqijNA/cNQmx7J2iu1ai3ZcRH5pZX49+6GoUihAPJKKrDq0P1zVNujJYRA5e+h62ZOzZBQSm4Jhi47oOop1bWCeWZBGY7FZyF4/zUMfucAAr87r6okXjv37kK9OU0VWhQA1eW9a//vk+jrzkmtv32VAZOWNu91z391RjWMq/dxNISRtUcTUVhWhVWH4jVsYfjyDtoK+70X9urvd5YI3n8N/6s3t65uj1b9P4cQAv/adRkfHdC+9MPao4lYcySh+RUlxMk2JkqXOVo6FTcF8PnsB7Dom+hG5w/UFzDM9f48BRMZczd22laprv3wSWtk4nBbtqHeLTkKy6uaLWx5t7gCqXdrhrFiUvPw8cF4LJvuibBrmYi+dQ/Rt+5h6XT9asmVVlTDtt39EgXlVdVqV9DV/zDQdcL/odhM3CuugJNdOyhF0x+ekTfuwvu9w2rLal8zdXu5BAQqqpRYdzxRFb40ib51Fz/HpGGJ/yB0tG04aXzSR8fUXpP7Lmdg3+UMPDb8/i3OpH5rqFYKZBeWq111WH8uoyF7tLT9+w1/92CLjnM4NhO/Jd2/WnDWFxGqf19NK8CibdENtqkf7qS6dY5SKTB/yzn06NQeK55SL7dx+16JqiL+oof7qUoH1W1LtRD46uQNtLO0wNwJvZGcU6wK+Rn5ZXjUU73OZXp+KW5kN+zF+zriJv712BCDPjddMGiZqGgNkyUbo+vQ4ZDuDjj06qRmewY0YcySR6MTgOv8QUxl4mmt+sFAmzpcD7yvHj62/HYTu2Pu4MH+zi1qy82cYkxeFY6nH+iB1c96AwA+PZKgun2IJrWfNyUVVfWGFEWjf8+lP19FSXkVkrI11yKrpamArSpo1XkdLNlxCUnZRRjew7HJ/T2zrubD/UZOMf5vUj/06NQedtaWcHGwVdt3ffsu3w+aurz68ksq4Win21WAQM2He90vlvVfI8k6lHBoTl5JJYL3XcO1OvPqNCluYTmDhfWCVN3irck5xUjWMHz4/FdncP2DANXvhgxat++V4IWtUZg/sTcGunRUlaupH7TqflF/6vPf8NTIHvjrg33UrjrMLSpX3Vrn2dG9UFEnGO+8cAc769UT8wk+qrFNulxkJAUGLdKrjpa+k6tbelk+ae8LHWsjNTa53lTo+9rLK6lUm/+091I6TiZkY/mMobCx0u7CkNqJ/DvP31EFrV8upTWxRU17I2/k4k9fRsLG6v4sj/D4bDwyuJvaPTJrXb2Tr7GoZnZheYPem/pq567V/dC9ll4zxKPpi1tt4KtbDuBkQg5OJtxv15jenXAxVbur13Th9d4hvOKn+4U1hWVVTV51ODPkdEuapeadPVeMsqZTrUOx90NulQGDVvC+OMRlFOKfP13Gj4vu3yu495t71dab/dUZ1b8v38nH5Tv5OHg1A8+Pc1ctv1fn/M3bfBbdfg/ubQ2DFjVbbbmlvHo6Sbp/0ix4//15DHfySnEjuwh9u9o3uv7SPfLc0La1GOqjpPbelBP7O2O6l5tW22i6OKW5OUhCAO/+XPM3qdsjdCevFPsu63ZPuRe+jmq2Pltte7T90PV+7zC+/utYzGginJy7qX3P+mdhCXhogLPGoUdN1hxJwLAeDlrvH6iZg6VLMeeWMOaQBQDldXp5tOnRWn0oHoXlVVg2fWiT6+2t89q8ntl0z2p9Z5LvqvXI/XH9b2qPtVWcDE86z9ECtJ+E+tOLPvB0u/9myA4t+fj+9zjO3ax5s/rg11j0fnMvErKaHtYwKQZ+7X13JgWV1UrEpOY1+0HVrs6tqxZ/dx6zvohAZkHT5Sa2/HZTrZxDLUsLBV769ryGLRofotOmCG7tttpOzs4vrWwyZOkqLqMQK/frd387bZVXKvV6vzN1zb1+K6uV+OxoIjafvolfL6VpPZ7xr10tuwF8U/MC2xIGLROly5wSfb7habvFKI/OAKD65vmkt3Y9ACSNP66PwLQ1J/DV70NZun7jbMsqDFBJva6IG7l46vPTmBlyGv9t5OquWlZ1Ptx/vZTeom/nTf3fa+62Lk2prQyv7S2gpBB5Ixf/O5qAS7fzJNn/L5fSeCeM3722435l+sZ6MWvnbdbtfV383QXOtdURhw5Jr6rhug437nppIu6VVKBbx6bH2OdN6I3IG7kav8mTYfDcGs6VOzVzmD4PT8KCh/qiUwdrjesZ8mbsR+sUKjWkN366hIyCMlVNLzkkZRdj1aHramUnmpKg4xeFfZczMJNf9hr4/mzDch3lVUo8+J9juJNXitf9B6k9xqiqGwYtavKqQ78h3QxyjHaWFs2GLAB43X8Q7KwtMeqDI6qCeev//AAWfaN5qITIWPzx9wr2APCq30AEPtIP648naR0atHUoNrP5lfQkZ8jSh7ZlTOqSKqiaotoe0vp3mrh42/AXOJgyBi0TNcDFXuNVSUBNzZK6Ottr/hYOAMtnDNO4XKre9w6/F0Md7NpRVRvGsX3j7SMyFrUhCwA+OXIdnxxpW6HFXBToeSsdIn1xjpaJCnp0IPo6d9D4WK/O7dV+nzywK/yGuGhct7E8JfWVit062qj+XXcyfS2nZmroPKnl1WDaeG6sOwa5dFRb1r6dJa4u98fpN33x7Oie6N+t8av5iIjIfLFHy0R1tG2Ho0smo6JKCaUQGPzO/eKifxjVU21dhUKBr+aOxoP/OYrb99Qn0zq0bzzQLH3CE+/92vgtSfo0EvTqWvn0cLz7y1WUVSqx9a9jVcvfftwTReVVeG6sOxzbt8P/nh+JY3HZ+PfjQ7D/SgYmD+qKqZ+c0Fh4EQCmDXPFz/VuSfL9gvF4bkNko20Z6GKP9Lwy9OnaAeP7dsGXJ26gV+f2eOeJIcjIL8Oyn69ijk9v9O5ihwG/B68ONlb46A9eAIAfolLRvp0lrqTlY9KArujfzR7JOcXo380e7Sws8ENUKob1cESnDu3QraNtg+KYzUn8MAD9396v0zZy+OIvozDIpSNe+vY8Yn+vw9RS//dwX5RXKjG2T+dGr7ir69p703Dpdh5mfXn/721loTBovSB99OrcXlV5vin+Q11w8Kp0Q4RE1HoUwtTKQbchBQUFcHR0RH5+PhwcdKsHo6vconJkFJRhiKtDo1fd5JdW4vLtfITHZ+FOXikWTuqLke6dmtxvRZUS1UqBK2n52BNzB9VKgWE9HHGvuELttgp1nUzIxq8X0/HOdE/VfROrlULny67T80sReSMX/bt2xJ28EpxJvov27SzxxAg3DOleM/To3tkO35y5hZnePTCkuwOEECivUiIuoxAjejgiNr0ALg62aG9tCXsbKyiVQnV+mqrAbUipd0vQ3dEW1ULgybWnEZ+pPlndo4sd/jLeAy881BcnE7Lxl41N30bmSNDD6Ne1A4QA/FYfVxWw7OHUXu2qNGtLCzw+ojv+NKYXTiRkw3dwN1WF71prZnkjKbsIc3x642zyXfgO7oaMgjI421sjMasIT31eU+dmhrcb5k7ojQ7WVhjker/377fEHDz/1Rn8c9pgTB7UFQG/31Oxti3WlhYarwbs0sEaR5dMxn8PxeNucQXWPjdS9bcoraiGQgFsPn0TxeU1VdNnjuyBY3FZOJmQg+VPDkXvOiH/XnEFrK0sYGdtie/OpuDtXVfwxIjusG1niR+jb8PJrp3ONY/6du2g8VYf/358CHp2soO9jRUOXs1oUAQ2Ofgx3MgpxqwvIpFTpLm8w7rZD2BYD0c89NExndrUEuP7dkbkjbZTp8jGygI9nNprLM6qSfiSyfhw3zXVzbSpaV06WCO3uAL9unZAkobXudS0Pe5g145QKBSqwrq1/Ia4IGT2SHgvP4zSymp07mCN8+88atA26vL5zaAlo9YMWtR25JdUIq+0AhYKBVwdbdVqMNX1W1IOqqqF6qbdVdVKVFQrYWet3lFdWFYJKwsLtLe2RGZBGSqqlLCyVKC7Y/sG+1QqBRSKmkri90oq1UKTJtmF5YjPKMT4vp0bvbKubmDNLSqHlYUFHO3aIaugDM72NsgtrkBaXilG9HREbnEFunSwRrVSGPRKvbru5JWiu4Ntgy8caXmlsLGywOmkXHj3dIKbk60q/CdkFSGnqBwT+t0vm1Ib+KwsFLC0UDQayiNv5MLKQoFRHp1U61QrBRSomcxdWF6JQ1czkZxTjDG9O8F/qCsUCgUSMgvx66V0zBrTC2HXagLC6N6dsfFUMv4y3gObTifDb4gL+nbtgD0xafjrxD5Y/stV9HbuAFcHWzz9QA9czyxEO0sLDO/hiNv3StGzU3uUVylRUFaJeZvOITa9AFH/9oOzvQ3uFlcg+tY99OrcHtPWnIRXLyfsfHECknOK8FtSLk4l5MDb3QmWCgX+NMYd644nwXdwN9zMLcbtuyWY0N8Z/braIz2/FG5O7XHnXik62VmjoKwSQ90csOvCHbh3tsO1jEI84O6E/NJK3MwpQTtLBY5fz8aHTw0HRM1tcEb0cISFhQLfnrmFDSduYJBrR1goFJjQ3xkuHW0wdWjNPRKPxGbivV9jMci1I6qqlZg0sCuOXMvE0ieGwn/NCQx1c8DXfx2LLvY2EEJACKCsqhqHYzPhN8Sl5t6W90rw/IYzWDJ1IGysLHHwagYWTuqLz44moKJKCcf27VSFV1+c3A99unTAGz9dAgAMdXNAB2srDHCxh5WFArbtLOE/zBXh8dn4wwM90c3BBsfisnD5Tj5G9HTC8J6OOJWQjYu38zHUzQFKARy6mqH6guDVywm7zt/GY8O743RiDj47mojRHp2wYc5onE+5hxE9nXArtxifhiVg2XRPeHTpgNyiCnx18gYeHOCMeZvPYYa3G/bEpOGRQV1xLD4bvbvY4WZuCWaN7oWoW3fx6Z9G4kJqHqYNdUVaXmlNCEm5hwHdOmqcplH7/7esshqfhSXAf6grRvR0hEKhwLaIm7CwUGCqpyts21lAqQSCfojBK34DMcDFHuWVSpxOykFCZhH+4uOBu8XlcLBtB2d7G1hYKBB96x6Sc4qhADBpYFfcySvFYNeOsG1nqTp2Wn4Zeji1R7Wy5r6bSdlF6NbRRlUlvjbCKBSKBl+Olb/ftNzKQmHwsh4MWm0EgxYREVHbo8vnNyfDExEREUmEQYuIiIhIIgxaRERERBJh0CIiIiKSCIMWERERkUQYtIiIiIgkwqBFREREJBEGLSIiIiKJMGgRERERSYRBi4iIiEgiDFpEREREEmHQIiIiIpIIgxYRERGRRBi0iIiIiCRiJXcDzJkQAgBQUFAgc0uIiIhIW7Wf27Wf401h0JJRYWEhAKBXr14yt4SIiIh0VVhYCEdHxybXUQht4hhJQqlUIi0tDR07doRCoTDovgsKCtCrVy+kpqbCwcHBoPum+3ieWwfPc+vhuW4dPM+tQ6rzLIRAYWEh3NzcYGHR9Cws9mjJyMLCAj179pT0GA4ODvxP3Ap4nlsHz3Pr4bluHTzPrUOK89xcT1YtToYnIiIikgiDFhEREZFEGLRMlI2NDZYtWwYbGxu5m2LSeJ5bB89z6+G5bh08z63DGM4zJ8MTERERSYQ9WkREREQSYdAiIiIikgiDFhEREZFEGLSIiIiIJMKgZYJCQkLQu3dv2NraYty4cTh79qzcTWpT3n33XSgUCrWfwYMHqx4vKytDYGAgunTpAnt7ezzzzDPIzMxU20dKSgoef/xx2NnZoVu3bnj99ddRVVXV2k/FqJw4cQLTp0+Hm5sbFAoFdu/erfa4EAJLly5F9+7d0b59e/j5+SEhIUFtnbt372L27NlwcHCAk5MT/va3v6GoqEhtnUuXLuGhhx6Cra0tevXqhY8++kjqp2Z0mjvX8+bNa/AanzZtmto6PNdNCw4OxpgxY9CxY0d069YNM2fORHx8vNo6hnqvCA8PxwMPPAAbGxv0798fW7ZskfrpGRVtzvXkyZMbvKYXLVqkto5s51qQSdm+fbuwtrYWmzZtElevXhULFiwQTk5OIjMzU+6mtRnLli0TQ4cOFenp6aqf7Oxs1eOLFi0SvXr1EmFhYSIqKkqMHz9eTJgwQfV4VVWVGDZsmPDz8xMXLlwQ+/btE87OzuKtt96S4+kYjX379om3335b7Ny5UwAQu3btUnt85cqVwtHRUezevVtcvHhRPPnkk6JPnz6itLRUtc60adOEl5eXiIyMFCdPnhT9+/cXzz33nOrx/Px84eLiImbPni2uXLkivv/+e9G+fXvxxRdftNbTNArNneu5c+eKadOmqb3G7969q7YOz3XT/P39xebNm8WVK1dETEyMeOyxx4S7u7soKipSrWOI94obN24IOzs7ERQUJGJjY8XatWuFpaWlOHDgQKs+Xzlpc64ffvhhsWDBArXXdH5+vupxOc81g5aJGTt2rAgMDFT9Xl1dLdzc3ERwcLCMrWpbli1bJry8vDQ+lpeXJ9q1ayd27NihWnbt2jUBQERERAghaj7kLCwsREZGhmqddevWCQcHB1FeXi5p29uK+h/+SqVSuLq6io8//li1LC8vT9jY2Ijvv/9eCCFEbGysACDOnTunWmf//v1CoVCIO3fuCCGE+Pzzz0WnTp3UzvM///lPMWjQIImfkfFqLGjNmDGj0W14rnWXlZUlAIjjx48LIQz3XvHGG2+IoUOHqh1r1qxZwt/fX+qnZLTqn2shaoLWP/7xj0a3kfNcc+jQhFRUVCA6Ohp+fn6qZRYWFvDz80NERISMLWt7EhIS4Obmhr59+2L27NlISUkBAERHR6OyslLtHA8ePBju7u6qcxwREYHhw4fDxcVFtY6/vz8KCgpw9erV1n0ibURycjIyMjLUzqujoyPGjRundl6dnJwwevRo1Tp+fn6wsLDAmTNnVOtMmjQJ1tbWqnX8/f0RHx+Pe/futdKzaRvCw8PRrVs3DBo0CC+++CJyc3NVj/Fc6y4/Px8A0LlzZwCGe6+IiIhQ20ftOub8nl7/XNf69ttv4ezsjGHDhuGtt95CSUmJ6jE5zzVvKm1CcnJyUF1drfZCAgAXFxfExcXJ1Kq2Z9y4cdiyZQsGDRqE9PR0LF++HA899BCuXLmCjIwMWFtbw8nJSW0bFxcXZGRkAAAyMjI0/g1qH6OGas+LpvNW97x269ZN7XErKyt07txZbZ0+ffo02EftY506dZKk/W3NtGnT8PTTT6NPnz5ISkrCv/71LwQEBCAiIgKWlpY81zpSKpV45ZVXMHHiRAwbNgwADPZe0dg6BQUFKC0tRfv27aV4SkZL07kGgOeffx4eHh5wc3PDpUuX8M9//hPx8fHYuXMnAHnPNYMWUT0BAQGqf48YMQLjxo2Dh4cHfvjhB7N7UyPT9Kc//Un17+HDh2PEiBHo168fwsPDMWXKFBlb1jYFBgbiypUrOHXqlNxNMXmNneuFCxeq/j18+HB0794dU6ZMQVJSEvr169fazVTDoUMT4uzsDEtLywZXtWRmZsLV1VWmVrV9Tk5OGDhwIBITE+Hq6oqKigrk5eWprVP3HLu6umr8G9Q+Rg3VnpemXruurq7IyspSe7yqqgp3797luW+hvn37wtnZGYmJiQB4rnWxePFi/Prrrzh27Bh69uypWm6o94rG1nFwcDC7L36NnWtNxo0bBwBqr2m5zjWDlgmxtrbGqFGjEBYWplqmVCoRFhYGHx8fGVvWthUVFSEpKQndu3fHqFGj0K5dO7VzHB8fj5SUFNU59vHxweXLl9U+qA4fPgwHBwd4enq2evvbgj59+sDV1VXtvBYUFODMmTNq5zUvLw/R0dGqdY4ePQqlUql6U/Xx8cGJEydQWVmpWufw4cMYNGiQWQ1l6er27dvIzc1F9+7dAfBca0MIgcWLF2PXrl04evRog2FUQ71X+Pj4qO2jdh1zek9v7lxrEhMTAwBqr2nZznWLptKT0dm+fbuwsbERW7ZsEbGxsWLhwoXCyclJ7UoLatprr70mwsPDRXJysjh9+rTw8/MTzs7OIisrSwhRc8m2u7u7OHr0qIiKihI+Pj7Cx8dHtX3tZcRTp04VMTEx4sCBA6Jr165mX96hsLBQXLhwQVy4cEEAEKtXrxYXLlwQt27dEkLUlHdwcnISe/bsEZcuXRIzZszQWN5h5MiR4syZM+LUqVNiwIABaiUH8vLyhIuLi/jLX/4irly5IrZv3y7s7OzMpuRArabOdWFhoViyZImIiIgQycnJ4siRI+KBBx4QAwYMEGVlZap98Fw37cUXXxSOjo4iPDxcraRASUmJah1DvFfUlhx4/fXXxbVr10RISIjZlXdo7lwnJiaK9957T0RFRYnk5GSxZ88e0bdvXzFp0iTVPuQ81wxaJmjt2rXC3d1dWFtbi7Fjx4rIyEi5m9SmzJo1S3Tv3l1YW1uLHj16iFmzZonExETV46WlpeKll14SnTp1EnZ2duKpp54S6enpavu4efOmCAgIEO3btxfOzs7itddeE5WVla39VIzKsWPHBIAGP3PnzhVC1JR4eOedd4SLi4uwsbERU6ZMEfHx8Wr7yM3NFc8995ywt7cXDg4OYv78+aKwsFBtnYsXL4oHH3xQ2NjYiB49eoiVK1e21lM0Gk2d65KSEjF16lTRtWtX0a5dO+Hh4SEWLFjQ4MsYz3XTNJ1fAGLz5s2qdQz1XnHs2DHh7e0trK2tRd++fdWOYQ6aO9cpKSli0qRJonPnzsLGxkb0799fvP7662p1tISQ71wrfn8SRERERGRgnKNFREREJBEGLSIiIiKJMGgRERERSYRBi4iIiEgiDFpEREREEmHQIiIiIpIIgxYRERGRRBi0iIiIiCTCoEVEZABbtmyBQqGAQqHAK6+8IndzGrh586aqfd7e3nI3h8hsMGgRkcmaN28eZs6c2WrHc3BwQHp6Ot5//32tt7l69SqeeeYZ9O7dGwqFAmvWrNG4XkhICHr37g1bW1uMGzcOZ8+eVXu8rKwMgYGB6NKlC+zt7fHMM88gMzNT9XivXr2Qnp6O1157Ta/nRkT6YdAiIjIQhUIBV1dXdOzYUettSkpK0LdvX6xcuRKurq4a1wkNDUVQUBCWLVuG8+fPw8vLC/7+/sjKylKt8+qrr+KXX37Bjh07cPz4caSlpeHpp59WPW5paQlXV1fY29vr/wSJSGcMWkTUpv34448YPnw42rdvjy5dusDPzw/FxcV49913sXXrVuzZs0c1ZBYeHg4ASE1NxbPPPgsnJyd07twZM2bMwM2bN1X7rO0JW758Obp27QoHBwcsWrQIFRUVOrUtLi4OdnZ2+O6771TLfvjhB7Rv3x6xsbEAgDFjxuDjjz/Gn/70J9jY2Gjcz+rVq7FgwQLMnz8fnp6eWL9+Pezs7LBp0yYAQH5+PjZu3IjVq1fD19cXo0aNwubNm/Hbb78hMjJSpzYTkWExaBFRm5Weno7nnnsOf/3rX3Ht2jWEh4fj6aefhhACS5YswbPPPotp06YhPT0d6enpmDBhAiorK+Hv74+OHTvi5MmTOH36NOzt7TFt2jS1IBUWFqba5/fff4+dO3di+fLlOrVv8ODBWLVqFV566SWkpKTg9u3bWLRoEf7zn//A09NTq31UVFQgOjoafn5+qmUWFhbw8/NDREQEACA6OhqVlZVq6wwePBju7u6qdYhIHlZyN4CISF/p6emoqqrC008/DQ8PDwDA8OHDVY+3b98e5eXlakNy33zzDZRKJb766isoFAoAwObNm+Hk5ITw8HBMnToVAGBtbY1NmzbBzs4OQ4cOxXvvvYfXX38d77//PiwstP+O+tJLL2Hfvn3485//DGtra4wZMwZ///vftd4+JycH1dXVcHFxUVvu4uKCuLg4AEBGRgasra3h5OTUYJ2MjAytj0VEhsegRURtlpeXF6ZMmYLhw4fD398fU6dOxR/+8Ad06tSp0W0uXryIxMTEBvOoysrKkJSUpLZvOzs71e8+Pj4oKipCamqqKtRpa9OmTRg4cCAsLCxw9epVVcAjItPHoEVEbZalpSUOHz6M3377DYcOHcLatWvx9ttv48yZM+jTp4/GbYqKijBq1Ch8++23DR7r2rWrJO28ePEiiouLYWFhgfT0dHTv3l3rbZ2dnWFpaal2BSEAZGZmqnrqXF1dUVFRgby8PLVerbrrEJE8OEeLiNo0hUKBiRMnYvny5bhw4QKsra2xa9cuADXDf9XV1WrrP/DAA0hISEC3bt3Qv39/tR9HR0fVehcvXkRpaanq98jISNjb26NXr146te/u3buYN28e3n77bcybNw+zZ89W229zrK2tMWrUKISFhamWKZVKhIWFwcfHBwAwatQotGvXTm2d+Ph4pKSkqNYhInkwaBFRm3XmzBmsWLECUVFRSElJwc6dO5GdnY0hQ4YAAHr37o1Lly4hPj4eOTk5qKysxOzZs+Hs7IwZM2bg5MmTSE5ORnh4OF5++WXcvn1bte+Kigr87W9/Q2xsLPbt24dly5Zh8eLFOs3PAoBFixahV69e+Pe//43Vq1ejuroaS5YsUTtOTEwMYmJiUFFRgTt37iAmJgaJiYmqdYKCgrBhwwZs3boV165dw4svvoji4mLMnz8fAODo6Ii//e1vCAoKwrFjxxAdHY358+fDx8cH48ePb8kpJqKWEkREbVRsbKzw9/cXXbt2FTY2NmLgwIFi7dq1qsezsrLEo48+Kuzt7QUAcezYMSGEEOnp6WLOnDnC2dlZ2NjYiL59+4oFCxaI/Px8IYQQc+fOFTNmzBBLly4VXbp0Efb29mLBggWirKys0bZs3rxZODo6qi3bunWr6NChg7h+/bpq2ZkzZ0S7du3Evn37hBBCJCcnCwANfh5++GG1fa1du1a4u7sLa2trMXbsWBEZGan2eGlpqXjppZdEp06dhJ2dnXjqqadEenp6g3YuW7ZMeHl5NXdqichAFEIIIWfQIyIyNvPmzUNeXh52796t9TZbtmzBK6+8gry8PMnaZQjvvvsudu/ejZiYGLmbQmQWOHRIRGQg+fn5sLe3xz//+U+5m9JASkoK7O3tsWLFCrmbQmRWeNUhEZEBPPPMM3jwwQcBoEE9K2Pg5uam6sVqrAI9ERkehw6JiIiIJMKhQyIiIiKJMGgRERERSYRBi4iIiEgiDFpEREREEmHQIiIiIpIIgxYRERGRRBi0iIiIiCTCoEVEREQkkf8HCx0GpJ4SBAMAAAAASUVORK5CYII=",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "plt.plot(np.array(history[::100]))\n",
        "plt.yscale('log')\n",
        "plt.xlabel('step [x100]')\n",
        "plt.ylabel('loss')\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "e0b02cf8-1b99-418a-a9c9-e440972fd5e4",
      "metadata": {
        "id": "e0b02cf8-1b99-418a-a9c9-e440972fd5e4"
      },
      "source": [
        "For the next training step, the goal is to improve the quality of the learned score:\n",
        "We decrease the learning rate and train without reducing the trajectories via \"subsampling\", meaning all samples in the training data are provided to the network."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 27,
      "id": "1cb4767a",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 793
        },
        "id": "1cb4767a",
        "outputId": "3a601cb1-6a83-4f94-fe3a-ac6666b990fe"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Window size:  2\n"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "loss: 0.01599 grad updates: 500000: 100%|██████████| 1000/1000 [20:41<00:00,  1.24s/it]\n"
          ]
        },
        {
          "data": {
            "image/png": "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FfuEjshKsU2JHC8oKGCXXXZJa78kSZIkSfXtscce0e1QKNRs28jxgoKtEx9aM/4D2G233ZLqZxAYUuSoESNGRBdMmT59epPtqqqqos/kHTFiBIWFhRnpnyRJkiS1VmE+FBZk6JWf/q/n29/+dnT7008/bbLd+vXrWbVqFQADBgyI7t9pp53o378/0Pz4D+C1116Lnj948ODWdjlrDClyVGlpKUcccQQAL7/8cpMlP3//+99Zv349AOPGjctY/yRJkiRJYccff3x0++mnn26y3dNPP01tbS0AhxxySHR/Xl4eY8eOBcKVEpFfRDf05ptvRispxo4dS15eXpv7nmmGFAE1ZcoU8vLyyMvLo6ysLG6bX/3qVwBUV1dz4YUXNiobWrVqFZdffjkAPXv25Oyzz05rnyVJkiQpJfIz/Eqzvffem6OPPhqAxx57jH//+9+N2qxYsYJf//rXQPgxo2eeeWa945dccgn5+eHOjh8/vtHjRcvLyxk/fjwQnipyySWXpPrLyAif7pEGM2bMYOHChdHPkXIdgIULFzJlypR67c8444xW3efwww/n5JNP5vHHH+cf//gH3/nOd7jkkkvo378/H3zwATfccANffPEFADfffDPbbLNNq+4jSZIkSWqbu+66izfeeIO1a9fygx/8gEsuuYQxY8bQuXNnZs2axY033hitkL/uuuvqTfcAGDZsGBMmTOCmm25i9uzZjBo1issvv5whQ4bwySefcPPNNzNnzhwAJkyYkLPrEebVRmpJlDJnnHEGf/rTnxJuH++PYMqUKdHk7Nprr22ymqK8vJwTTjiBF154Ie7xTp068Zvf/KbJ89tqyZIlMSvG/gLonpb7SJIkSUrEeuBOIPyUh9inQgRd7NhicW8YmIEKB4AlIRi0Oryd7u/ZjBkzOOGEE/jyyy/jHs/Ly+Pqq6/muuuui3u8pqaGc845hz/+8Y9N3uOss87igQceoFOn3Jw4YSVFjuvcuTNTp07l0UcfZcqUKbz//vusXbuWvn37csghh3DRRRdx0EEHZbubkiRJkpS4AjIyDQOADC7bcPDBB/N///d/TJw4kWeeeYbPPvuMqqoq+vXrx6GHHsr48ePZd999mzy/U6dOTJ48meOPP54HHniAt99+m1WrVtGnTx9GjBjBeeedF51WkquspFCbWEkhSZIkBUk7qaTom+FKirrChlz7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JEmqk67x56BBg6JP+GhprBc5XlNTw5o1a6KPGh0wYEC0TRDGlh02pGjp0SpBN2zYMPLz8wmFQsyfP7/ZtrHHd9ttt3R3DT5M/y0kSZIktWfZWTgzXdI1/txjjz3429/+BkAoFGq2bezxgoKtUUBpaSmDBg1i8eLFgRhbunBmjioqKoquBfHGG280O3do+vTpQHiRk/333z/NPbuAGXen+RaSJEmSJL797W9Htz/99NNm237yySdAeA2KXr161Tt28MEHA/DRRx+xYsWKJq8RGVsCjBo1Kun+JsKQIocde+yxAKxfv56///3vcdssWbKEl19+GYAjjjii3nyjtJjSl5fTewdJkiRJ7V6kkiITr0wt0Jl63/72t9l2220BeO6555qspvjss8947733gHC40KlT/SggMrYEmDJlStxrbN68mb/+9a8A7L777gwbNqxtnW+CIUVALVq0iLy8PPLy8jj00EPjtjn77LPp0aMHAFdccQWrV6+udzwUCvGzn/0s+hd1woQJae0zAAcH55nBkiRJktSe5efn86tf/QqAzz//nOuuu65Rm+rqan72s59RU1MDwPnnn9+ozbhx49h5550BuPHGG6NVF7EmTJjA119/Hd1Olw67JkU6LVy4kBkzZtTbF1kldePGjY2Sqe9973vRRUuS0atXL26++WbOP/98Pv/8cw444ACuvvpq9tprL5YtW8Zdd93Fq6++CsApp5zSZNiRSr8b8ksqW24mSZIkSUqBn//85zzxxBO8++67/Pa3v+Wjjz7i9NNPZ7vttuOTTz7hzjvv5I033gBgzJgxHH/88Y2uUVhYyMSJEznmmGNYv349o0aN4te//jUjR47k66+/5sEHH+Spp54CwlNDmnrUaSrk1dbW+qvvFJsyZQpnnnlmwu1fffXVRgHCokWL2GmnnQAYPXo006ZNa/L8a6+9luuuu46m/ijHjBnz/9u79yCr6/p/4M9FwAXUUUQTBBUvK5npkOiooIIJjuK1GhsvI5KXmcYMHQfNVMTUFG9g/qEpGJnjJS11lJwcFIhrBGmlSd7wlkIYIslF2Di/P/hxvksul0XY8zns4zHDzGf3vHf3BX7c8z7P83q/3/nNb36z1vm3m8sHH3xQ3tX1siR3jkuGD9zsPwYAANgIi5OM/P/X77//flUdp9nwtUUyLUlznab4UZIjk1Tfv9kaH330UU4++eTMnj17nWNOPPHEPProo+vdAuD+++/PD37wg3XueXjYYYdl3Lhx6dSp05eueV0s99gKXH/99ZkyZUrOOuusdOvWLW3bts2uu+6a/v375+GHH864ceO2SEDRqEkbHgIAAMDm07lz58yYMSP33ntvjjnmmOyyyy5p06ZNdtttt5xyyin57W9/m3Hjxm1wj8ILL7wws2fPzoUXXpi99947tbW12XnnndOnT5/cc889mTp16hYNKBKdFHxJ/9tJ0T/JHytaEQAAtFxbTyfFH5I0fUn8ppmXZPUpGdX2b7Y10knBZiWgAAAAYFPZOBMAAICCqU/zHQ1avUeQbo10UgAAAACFIKQAAAAACsFyDwAAAAqmPsnKZvxZFIVOCgAAAKAQdFIAAABQMDbObKl0UgAAAACFIKQAAAAACsFyDwAAAArGxpktlU4KAAAAoBB0UgAAAFAwNs5sqXRSAAAAAIWgkwIAAICCsSdFS6WTAgAAACgEIQUAAABQCJZ7AAAAUDA2zmypdFIAAAAAhaCTAgAAgIKxcWZLpZMCAAAAKAQhBQAAAFAIlnsAAABQMDbObKl0UgAAAACFoJMCAACAgrFxZkulkwIAAAAoBJ0UAAAAFMzKNF8nRXP9HDaGTgoAAACgEIQUAAAAQCFY7gEAAEDBOIK0pdJJAQAAABSCTgoAAAAKxhGkLZVOCgAAAKAQhBQAAABAIVjuAQAAQMHYOLOl0kkBAAAAFIJOCgAAAArGxpktlU4KAAAAoBB0UgAAAFAw9qRoqXRSAAAAAIUgpAAAAAAKwXIPAAAACsbGmS2VTgoAAACgEHRSAAAAUDA2zmypdFIAAAAAhSCkAAAAAArBcg8AAAAKxsaZLZVOCgAAAKAQdFLwpdTX/1/q+J8K1gEAAKw9J284V68+i9J8HQ6fNdPPYWMIKfhSFixYUL4eXcE6AACAtS1YsCB77bVXpcvYRPdXugAqxHIPvpT58+dXugQAAKAR5upUI50UfCk9evQoX0+bNi3dunWrYDVsDT766KMcdthhSZKZM2emc+fOFa6IaueeYnNyP7G5uafY3N5///0ceeSRSdaeq1eD3XbbLe+//37Fa6CyhBR8KbW1teXrbt26pWvXrhWshq1N586d3VNsVu4pNif3E5ube4rNreFcvRq0bt3a/wNY7gEAAAAUg5ACAAAAKAQhBQAAAFAIQgoAAACgEIQUAAAAQCEIKQAAAIBCEFIAAAAAhVBTKpVKlS4CAAAAQCcFAAAAUAhCCgAAAKAQhBQAAABAIQgpAAAAgEIQUgAAAACFIKQAAAAACkFIAQAAABSCkAIAAAAoBCEFAAAAUAhCCgAAAKAQhBRssnfffTeXX355evTokQ4dOqRjx4459NBDc9ttt2Xp0qWVLo8qMWvWrPzkJz/JgAED0rVr12y77bbZbrvtUldXl8GDB2fKlCmVLpGtxJVXXpmampryn4kTJ1a6JKrUe++9l+uuuy69evXKLrvsktra2nTr1i1HHXVUhg0blldeeaXSJVIFVqxYkdGjR+f4449P586dy89/+++/fwYPHpxp06ZVukQK4F//+leeffbZDBs2LCeccEI6depUfh4777zzmvz9nnvuuZx++unlOVfXrl1z+umn57nnntv8xcMmqimVSqVKF0H1eeaZZ3LOOedk8eLFjT5eV1eXcePGZd99923myqgmRx99dCZPnrzBceeee27uv//+tG3bthmqYmv08ssv59BDD019fX35cxMmTEjfvn0rVxRV6e67785VV12VJUuWrHPMkCFDMmrUqOYriqrz7rvvZuDAgXn11VfXO+6SSy7JXXfdlZqammaqjKJZ33/7QYMGZezYsRv1fVatWpWLLrooY8aMWeeYCy64ID//+c/TqpX3saksdyBN9tJLL+W73/1uFi9enO222y433XRTpk2blhdeeCEXXnhhkuT111/PwIED85///KfC1VJkH374YZKkS5cuGTJkSJ544onMnDkz06dPz5133pndd989SfLggw9u0rsFkPzfxKy+vj677rprpcuhit1444354Q9/mCVLlqSuri633XZbJk6cmJdeeinjx4/PbbfdliOPPNIEn/VauXLlWgHFQQcdlLFjx2b69Ol5/vnnM2zYsHTo0CHJ6lBsxIgRlSyXAtljjz0yYMCATfraq6++uhxQ9OzZM4888khmzpyZRx55JD179kySjB49Otdcc81mqxc2WQma6KijjiolKbVu3bo0bdq0Lzx+6623lpKUkpSuu+665i+QqjFw4MDSY489Vqqvr2/08QULFpTq6urK99OkSZOauUK2BiNHjiwlKfXo0aN01VVXle+nCRMmVLo0qsj48ePL9865555bWrFixTrHfv75581YGdXm8ccfL99LRxxxRKPPgbNmzSq1adOmlKS04447llauXFmBSimCYcOGlZ555pnSvHnzSqVSqTR37tzy/TNo0KCN+h7/+Mc/Sq1bty4lKfXq1au0dOnStR5fsmRJqVevXuX5/RtvvLG5/xrQJKJ+mmTmzJnl9vzzzz8/RxxxxBfGXH755fnqV7+aJLnrrruycuXKZq2R6vHss8/mjDPOyDbbbNPo4506dcodd9xR/viJJ55ortLYSrz33nu59tprkyT33nuvJUNsklWrVuX73/9+kuTggw/OmDFj0qZNm3WOd5+xPg33mrjqqqsafQ485JBDctJJJyVJFi1alNdee63Z6qNYrr/++px00kn5yle+ssnfY9SoUeXljnfffXfatWu31uPt27fP3XffnSSpr6/PyJEjN71g2AyEFDTJU089Vb4ePHhwo2NatWqVc889N8nqJ9YJEyY0R2lspfr161e+fuuttypYCdXo4osvzmeffZZBgwblmGOOqXQ5VKnnn38+b7zxRpLVG7C2bt26whVRzVasWFG+3nvvvdc5bp999mn0a6ApSqVSnn766SRJjx49cvjhhzc67vDDD8/++++fJHn66adTsm0hFSSkoEnWnLTQoUOHHHLIIesc1/DFwNSpU7d4XWy9Pv/88/L1ujouoDG//vWv8+yzz6Zjx465/fbbK10OVezxxx9PsnoDuzXvbifJwoUL88Ybb2ThwoWVKo0qtOaFYJK8/fbb6xy3JpivqanJfvvtt8XrYus0d+7c8h5gGwrr1zz+z3/+M++8886WLg3WSUhBk6xpN9x3333X+05Sjx49vvA1sCkmTZpUvl6zjAg2ZNGiRRkyZEiSZMSIEenUqVOFK6KazZgxI0my1157Zfvtt8/DDz+cr3/969l5551TV1eXnXfeOfvvv39uv/32tYJVaMyZZ56ZHXbYIcnq30///e9/vzDmpZdeyrhx45IkZ511Vnk8NNXf//738nXD+XljzN8pCiEFG2358uX5+OOPkyRdu3Zd79iddtqpvDP1+++/v8VrY+u0atWq3HLLLeWPzzjjjApWQzW54oorMm/evPTu3Tvnn39+pcuhiq1atSpz5sxJsnqfnCFDhuTss8/OK6+8sta4119/PUOHDs2xxx6bRYsWVaBSqkWnTp3yq1/9Ku3bt8/UqVNz6KGH5sEHH8yMGTMyfvz4XH/99TnmmGOyYsWK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",
            "text/plain": [
              "<Figure size 1200x800 with 2 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "params_single_step, history = update_network(params_single_step, forward_fn, data, key, steps = 1000,\n",
        "                                             ROLLOUT_start=2, ROLLOUT_increases=ROLLOUT_increases, bidirectional=True, lr=1e-4,\n",
        "                                             subsample=1)\n",
        "\n",
        "save_snapshot_score(params_single_step, forward_fn, meshgrid)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "2e75b45b",
      "metadata": {},
      "source": [
        "This typically results in an even _cleaner_ score function, containing fewer sign changes outside the two bands of the ground truth trajectories. The runtime above was reduced via the `ROLLOUT_increases=0` setting. Once you enable it, e.g., with `ROLLOUT_increases=10` potentially with an increased number of iterations, you should see further improvements of the score field in the visualization.\n",
        "\n",
        "The training in this stage is also more stable, as shown in the corresponding plot below."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 28,
      "id": "46f8e794-cdf1-4980-ba48-46a6370e4b7b",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 449
        },
        "id": "46f8e794-cdf1-4980-ba48-46a6370e4b7b",
        "outputId": "aabb022c-b5be-4586-e762-1b7306987371"
      },
      "outputs": [
        {
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAloAAAGwCAYAAABxbMuTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAv5klEQVR4nO3deXxUVZ738W9VQmUxJCEkBgKEEBEwLKFlyUSlGSEawUZR55FBekR0YGixXSLadtsj2j0PMNoPTasZ9NWK+Di24ALo0yAKYRMMWyBswSAYBSQkhCUbkK3O8wdNjekEDbEut1L1eb9e9ZK699S5vzqhrC/n3nviMMYYAQAAwOucdhcAAADgrwhaAAAAFiFoAQAAWISgBQAAYBGCFgAAgEUIWgAAABYhaAEAAFgk2O4CApnb7dbRo0fVvn17ORwOu8sBAAAtYIxRZWWlEhIS5HR+/5wVQctGR48eVbdu3ewuAwAAtMLhw4fVtWvX721D0LJR+/btJZ3/QUVGRtpcDQAAaImKigp169bN8z3+fQhaNrpwujAyMpKgBQBAG9OSy364GB4AAMAiBC0AAACLELQAAAAsQtACAACwCEELAADAIgQtAAAAixC0AAAALELQAgAAsAhBCwAAwCIELQAAAIsQtAAAACxC0AIAALAIQctPGWN0trbB7jIAAAhoBC0/lfXuTl3zzAodKK20uxQAAAIWQcuLkpKSNGDAAA0cOFA33nijrbUs2fGtJOnnr22xtQ4AAAJZsN0F+JvPP/9cERERdpfhcazinN0lAAAQsJjRAgAAsIjtQevZZ5+Vw+Fo9OjTp49Xj7F+/XqNGTNGCQkJcjgcWrp0abPtsrOzlZSUpNDQUKWlpWnLlks77eZwODR8+HANGTJEb7/9thcqBwAAbZlPnDrs27evVq1a5XkeHHzxsjZu3KihQ4eqXbt2jbYXFBSoY8eOio+Pb/Ka6upqpaam6v7779edd97ZbL+LFi1SVlaWXnnlFaWlpWnu3LnKzMxUYWGhrrzySknSwIEDVV9f3+S1n376qRISErRhwwZ16dJFxcXFysjIUP/+/TVgwIAWjQEAAPA/PhG0goOD1alTpx9s53a7NW3aNF199dVauHChgoKCJEmFhYUaMWKEsrKy9OSTTzZ53ahRozRq1Kjv7XvOnDmaPHmyJk2aJEl65ZVXtGzZMs2fP19PPfWUJCk/P/97++jSpYskqXPnzho9erS2b9/ebNDKzs5Wdna2GhpYfgEAAH9m+6lDSfryyy+VkJCg5ORkTZgwQYcOHWq2ndPp1PLly7Vjxw7de++9crvdOnjwoEaMGKGxY8c2G7Jaora2Vnl5ecrIyGh0rIyMDOXm5raoj+rqalVWnl9KoaqqSqtXr1bfvn2bbTtt2jQVFBRo69atraoXAAC0DbbPaKWlpWnBggXq3bu3iouL9dxzz2nYsGHas2eP2rdv36R9QkKCVq9erWHDhumee+5Rbm6uMjIyNG/evFbXUFZWpoaGhianHePj4/XFF1+0qI+SkhLdcccdkqSGhgZNnjxZQ4YMaXVNAACg7bM9aH33lN6AAQOUlpam7t27691339UDDzzQ7GsSExP11ltvafjw4UpOTtbrr78uh8NxuUpuVnJysnbu3GlrDQAAwLf4xKnD74qOjlavXr104MCBi7YpKSnRlClTNGbMGJ05c0aPPfbYjzpmbGysgoKCVFJS0uQ4Lbl2zNc1uI3dJQAAEJB8LmhVVVXp4MGD6ty5c7P7y8rKNHLkSF1zzTVavHixcnJytGjRIk2fPr3Vx3S5XBo0aJBycnI829xut3JycpSent7qfn3F8t3FdpcAAEBAsv3U4fTp0zVmzBh1795dR48e1YwZMxQUFKTx48c3aet2uzVq1Ch1795dixYtUnBwsFJSUrRy5UqNGDFCXbp0aXZ2q6qqqtEMWVFRkfLz8xUTE6PExERJUlZWliZOnKjBgwdr6NChmjt3rqqrqz13IbZlFefq7C4BAICAZHvQOnLkiMaPH68TJ04oLi5ON9xwgzZt2qS4uLgmbZ1Op2bOnKlhw4bJ5XJ5tqempmrVqlXNvkaStm3b1uh3D2ZlZUmSJk6cqAULFkiSxo0bp+PHj+uZZ57RsWPHNHDgQK1YsaLZdbkAAABawmGM4QIem1RUVCgqKkrl5eWKjIz0at9JTy3z/Pl/39FPE9K6e7V/AAAC1aV8f/vcNVoAAAD+gqAFAABgEYIWAACARQhaAAAAFiFoBYCS8nN2lwAAQEAiaAWAF1dffJV9AABgHYIWAACARQhaAAAAFiFoAQAAWISgBQAAYBGCFgAAgEUIWgAAABYhaAEAAFiEoAUAAGARghYAAIBFCFoB4uuyartLAAAg4BC0AkRVTb3dJQAAEHAIWgAAABYhaAEAAFiEoAUAAGARghYAAIBFCFoAAAAWIWgFiFNnau0uAQCAgEPQChBT38qzuwQAAAIOQStAVNc22F0CAAABh6AFAABgEYIWAACARQhaAAAAFiFoAQAAWISgBQAAYBGCVgAxxthdAgAAAYWgFUAcDofdJQAAEFAIWgAAABYhaAEAAFiEoBVASirO2V0CAAABhaAVQLLezbe7BAAAAgpBK4AUHquyuwQAAAIKQQsAAMAiBK0AUlZVY3cJAAAEFIIWAACARQhaAAAAFiFoBRi3m1/DAwDA5ULQCjDvbjtsdwkAAAQMglaA+XjPMbtLAAAgYBC0Asy6/cftLgEAgIBB0AIAALAIQSsA7S+ptLsEAAACAkErAL28+oDdJQAAEBAIWgHoo51H7S4BAICAQNAKUHUNbrtLAADA7xG0AtSyXcV2lwAAgN8jaAWoRxfl210CAAB+j6AVwIzh1/EAAGAlglYA+2Rvid0lAADg1whaAWzqf+eppr7B7jIAAPBbBK0A1/u3K1R+ps7uMgAA8EsELSj1d5+qnuUeAADwOoIWJEk9n/7Y7hIAAPA7BC14fH6gzO4SAADwKwQteNzz2ma7SwAAwK8QtNDIygKWfAAAwFsIWmhk8v/dxoXxAAB4CUELTXAKEQAA7wi2uwD4ni1FJ1V+pk5R4e3sLgXwWcYY1TUYVdfU63hVjb49fVZH//YoPn1OpZU1Olldq6qaetXUN8htpGCnQ+GuIMW1D1FCVJi6d7xCSbHh6hF7hbpEhykqrJ2Cg/j3L+BPCFpoVurvPtXXs2+1uwzgsnK7jWrq3Tp5plYFRyu0peiE1hYe15elVV49zsHj1S1q53BIj47spbE/SVBiTLgcDodX6wAupwu/XzfQ/h4TtHBR/2/nUY1JTbC7DOBHcbuNztQ16GRVrQpLKrWl6ITW7y9TYUml3aX9IGOkP67arz+u2t9o+5/+eaBu6ddJIcFBNlXWthhjVNvg1pmaBpWfrVNZVY2OVZxTSUWNjlfW6PSZ8zOPZ2obVFPfoLp6o4a/hQKnQwp2OtUu2KmQYKdcwU4FOx1ySAoOOv88JNipsHZBuiIkWGHtghTmClJYuyCFtgtSuOv89nBXkK5wBSuknVOuIKeCgxxqF+RUuyCnnH/LHXYEEGOMGtznx+dcnVtn6xp0trZBVTX1qjpXr8pzdao4V6eKs/WqrKlXxd/G79vTZ3X45FmVVdVYVltIsFP9ukTpqrgrlBgTrm4x4UqIDlOnyFB1uMKl0GBnm5gBdpgLEROXXUVFhaKiolReXq7IyEiv9p301DKv9LP3uUxdEUIehz3cbqN6t1FN/fn/8ZdU1OjIqTMqOl6tL45Vas/Rcn1z4ozdZdpqyk+T9fDIqxURoJ9TY87PQh6vrNHeoxX6ZO8xLdnxrd1lwSZ9OrXXiD5XakhSjHp1aq+4iBC5gr0fxi7l+5ugZaO2ELQk6eDM0QpyBtZUL36c7/4r+fSZOh06eUYHj1dpX3GFdh4u1+5vy+0u0S8tmDREw3vF+eWpGbfb6FjFOW0uOqF3tx5R7lcn7C4JbYQr2Kn9/zHKq31eyvd3YP4TCJfkqt8s14H/PapNTNHCe/4+LB2rOKdvTpyfSdpx6LS2fX1Sbv6Z5lPue2OrJOn+63voN6P7tMnPrDFGJ6prtfmrk/rzZ18p//Bpu0tCG1dbb++SRQQttEjPpz9WzuPDdVVchN2loBXqG9w6U9egU9W1+rKkSlu/OanPD5xgZslPzd9YpPkbi/S/BnXVf941QE4fnZE+V9egg8er9N62I1rw+dd2lwNYgqCFFhv5f9bJ4Th/3Va4i786drgwy3Su3q3Kc3U6VV2n41U1+uZEtXYdKdeWopM6dDKwr1nC/3gv74jeyzuiIUkd9Pp9QxQZat+SLbX1bu06clqLth7We3lHbKsDuNz4tsQlMUZKeeYTSdKa6f+oHrFX2FzR5XfhDqaqc+fXTzp88qy+OVGtb06c0dcnqlVUVq0jp87aXSbgsfXrUxrw7KeSpH/7abIevLGnosKsCV019Q06dOKMtn59Sq+uPxjwNysABC202o1/WCtJSuoYrjfvH6ruHdt26HK7jc7VN+hEVa2Kyqq17euTWv9lGdeIwK+8uv4rvbr+K8/z2AiXfv4P3TW4e4w6RYUqOrydwtoFKTjIIafDIWMkdzPLI3z1t89Izr5SVdXU2/iOAN9G0MKP9vWJMxr+wlrP8ycye+v+63sozOUba/xcWMG74lydjpw6qy1FJ7RqX6m2FJ20uzTAdmVVtZq76ku7ywD8FkELXvfCJ4V64ZPCRtv+16CuuvParurbJVJXuIIvabmICyuQNLiN3Ob8fy+sq3T6TJ2+PX1WBUcrlPfNKeV+dUIN3AoHAPARBC1cFhcuygUAIJC0vUVWAAAA2giCFgAAgEUIWgAAABYhaAEAAFiEoAUAAGARghYAAIBFCFoAAAAWIWgBAABYhAVLvSgpKUmRkZFyOp3q0KGD1qxZY3dJAADARgQtL/v8888VERFhdxkAAMAHcOoQAADAIj4VtGbPni2Hw6FHH33Uq/2uX79eY8aMUUJCghwOh5YuXdpsu+zsbCUlJSk0NFRpaWnasmXLJR3H4XBo+PDhGjJkiN5++20vVA4AANoynwlaW7du1auvvqoBAwZ8b7uNGzeqrq6uyfaCggKVlJQ0+5rq6mqlpqYqOzv7ov0uWrRIWVlZmjFjhrZv367U1FRlZmaqtLTU02bgwIHq169fk8fRo0clSRs2bFBeXp4++ugjzZw5U7t27WrJWwcAAH7KJ4JWVVWVJkyYoD//+c/q0KHDRdu53W5NmzZN99xzjxoaGjzbCwsLNWLECL355pvNvm7UqFH6j//4D91xxx0X7XvOnDmaPHmyJk2apJSUFL3yyisKDw/X/PnzPW3y8/O1Z8+eJo+EhARJUpcuXSRJnTt31ujRo7V9+/Zmj5Wdna2UlBQNGTLk4oMCAADaPJ8IWtOmTdOtt96qjIyM723ndDq1fPly7dixQ/fee6/cbrcOHjyoESNGaOzYsXryySdbdfza2lrl5eU1Or7T6VRGRoZyc3Nb1Ed1dbUqKyslnQ+Oq1evVt++fZttO23aNBUUFGjr1q2tqhcAALQNtt91uHDhQm3fvr3FoSMhIUGrV6/WsGHDdM899yg3N1cZGRmaN29eq2soKytTQ0OD4uPjG22Pj4/XF1980aI+SkpKPDNmDQ0Nmjx5MjNWAAAEOFuD1uHDh/XII49o5cqVCg0NbfHrEhMT9dZbb2n48OFKTk7W66+/LofDYWGlPyw5OVk7d+60tQYAAOBbbD11mJeXp9LSUl177bUKDg5WcHCw1q1bpxdffFHBwcGNrsP6rpKSEk2ZMkVjxozRmTNn9Nhjj/2oOmJjYxUUFNTkYvqSkhJ16tTpR/UNAAACl61Ba+TIkdq9e7fy8/M9j8GDB2vChAnKz89XUFBQk9eUlZVp5MiRuuaaa7R48WLl5ORo0aJFmj59eqvrcLlcGjRokHJycjzb3G63cnJylJ6e3up+AQBAYLP11GH79u3Vr1+/RtuuuOIKdezYscl26Xz4GTVqlLp3765FixYpODhYKSkpWrlypUaMGKEuXbo0O7tVVVWlAwcOeJ4XFRUpPz9fMTExSkxMlCRlZWVp4sSJGjx4sIYOHaq5c+equrpakyZN8vK7BgAAgcL2i+EvhdPp1MyZMzVs2DC5XC7P9tTUVK1atUpxcXHNvm7btm268cYbPc+zsrIkSRMnTtSCBQskSePGjdPx48f1zDPP6NixYxo4cKBWrFjR5AJ5AACAlnIYY4zdRQSqiooKRUVFqby8XJGRkV7tO+mpZV7tDwCAturr2bd6tb9L+f72iXW0AAAA/BFBCwAAwCIELQAAAIsQtAAAACxC0AIAALAIQQsAAMAiBC0AAACLELQAAAAsQtACAACwCEELAADAIgQtAAAAixC0AAAALELQAgAAsAhBCwAAwCIELQAAAIsQtAAAACxC0AIAALAIQQsAAMAiBC0AAACLELQAAAAsQtACAACwCEELAADAIgQtAAAAixC0AAAALELQAgAAsAhBCwAAwCIELQAAAIsQtAAAACxC0AIAALAIQQsAAMAiBC0AAACLELQAAAAsQtACAACwCEELAADAIgQtAAAAixC0AAAALELQAgAAsAhBCwAAwCIELQAAAIsQtPyQMcbuEgAAgAhafumzL8vsLgEAAIig5ZcOlFbZXQIAABBBCwAAwDIELQAAAIsQtAAAACxC0PJD5+ob7C4BAACIoOWXztUStAAA8AWtClpvvvmmli1b5nn+5JNPKjo6Wtddd52++eYbrxUHAADQlrUqaM2cOVNhYWGSpNzcXGVnZ+v5559XbGysHnvsMa8WCAAA0FYFt+ZFhw8fVs+ePSVJS5cu1V133aUpU6bo+uuv1z/+4z96sz4AAIA2q1UzWhERETpx4oQk6dNPP9VNN90kSQoNDdXZs2e9Vx1ax+GwuwIAAKBWzmjddNNN+td//Vf95Cc/0f79+zV69GhJ0t69e5WUlOTN+gAAANqsVs1oZWdnKz09XcePH9cHH3ygjh07SpLy8vI0fvx4rxYIAADQVrVqRis6Olovv/xyk+3PPffcjy4IXmCM3RUAAAC1ckZrxYoV2rBhg+d5dna2Bg4cqHvuuUenTp3yWnEAAABtWauC1hNPPKGKigpJ0u7du/X4449r9OjRKioqUlZWllcLBAAAaKtadeqwqKhIKSkpkqQPPvhAP/vZzzRz5kxt377dc2E8AABAoGvVjJbL5dKZM2ckSatWrdLNN98sSYqJifHMdMFGLO8AAIBPaNWM1g033KCsrCxdf/312rJlixYtWiRJ2r9/v7p27erVAgEAANqqVs1ovfzyywoODtb777+vefPmqUuXLpKkjz/+WLfccotXC8SlYz4LAADf0KoZrcTERP31r39tsv2Pf/zjjy4IAADAX7QqaElSQ0ODli5dqn379kmS+vbtq9tuu01BQUFeKw4AAKAta1XQOnDggEaPHq1vv/1WvXv3liTNmjVL3bp107Jly3TVVVd5tUhcGpYrBQDAN7TqGq2HH35YV111lQ4fPqzt27dr+/btOnTokHr06KGHH37Y2zUCAAC0Sa2a0Vq3bp02bdqkmJgYz7aOHTtq9uzZuv76671WHAAAQFvWqhmtkJAQVVZWNtleVVUll8v1o4sCAADwB60KWj/72c80ZcoUbd68WcYYGWO0adMmTZ06Vbfddpu3awQAAGiTWhW0XnzxRV111VVKT09XaGioQkNDdd1116lnz56aO3eul0vEpWIdLQAAfEOrrtGKjo7Whx9+qAMHDniWd7jmmmvUs2dPrxaH1uE38AAA4BtaHLSysrK+d/+aNWs8f54zZ07rKwIAAPATLQ5aO3bsaFE7B9MptjMspAUAgE9ocdD67owVAAAAflirLoYHAADADyNo+aH+XaLsLgEAAIig5ZdC2vFjBQDAF/CNDAAAYBGClh9ysGQpAAA+gaAFAABgEYIWAACARQhaAAAAFiFoAQAAWISgBQAAYBGCFgAAgEUIWgAAABYhaPkhB8toAQDgEwhafoicBQCAbyBo+SFjdwEAAEASQQsAAMAyBC0AAACLELQAAAAsQtDyQ1wMDwCAbyBoAQAAWISgBQAAYBGCFgAAgEUIWv6Ii7QAAPAJBC0AAACLELQAAAAsQtACAACwCEELAADAIgQtAAAAixC0AAAALELQAgAAsAhBCwAAwCIELQAAAIsQtAAAACxC0AIAALAIQQsAAMAiBC0AAACLELQAAAAsQtDyR8buAgAAgETQAgAAsAxBCwAAwCLBdhfgT5KSkhQZGSmn06kOHTpozZo19hTisOewAACgMYKWl33++eeKiIiwuwwAAOADOHXoj7gYHgAAn2B70Jo3b54GDBigyMhIRUZGKj09XR9//LFXj7F+/XqNGTNGCQkJcjgcWrp0abPtsrOzlZSUpNDQUKWlpWnLli2XdByHw6Hhw4dryJAhevvtt71QOQAAaMtsD1pdu3bV7NmzlZeXp23btmnEiBG6/fbbtXfv3mbbb9y4UXV1dU22FxQUqKSkpNnXVFdXKzU1VdnZ2RetY9GiRcrKytKMGTO0fft2paamKjMzU6WlpZ42AwcOVL9+/Zo8jh49KknasGGD8vLy9NFHH2nmzJnatWvXpQwFAADwMw5jjM+daIqJidELL7ygBx54oNF2t9uta6+9VldffbUWLlyooKAgSVJhYaGGDx+urKwsPfnkk9/bt8Ph0JIlSzR27NhG29PS0jRkyBC9/PLLnmN169ZNv/zlL/XUU09d8nt44okn1LdvX913330XbVNRUaGoqCiVl5crMjLyko9xMZ8fKNM9r232Wn8AALRlX8++1av9Xcr3t+0zWt/V0NCghQsXqrq6Wunp6U32O51OLV++XDt27NC9994rt9utgwcPasSIERo7duwPhqyLqa2tVV5enjIyMhodKyMjQ7m5uS3qo7q6WpWVlZKkqqoqrV69Wn379m22bXZ2tlJSUjRkyJBW1QsAANoGn7jrcPfu3UpPT9e5c+cUERGhJUuWKCUlpdm2CQkJWr16tYYNG6Z77rlHubm5ysjI0Lx581p9/LKyMjU0NCg+Pr7R9vj4eH3xxRct6qOkpER33HGHpPOBcfLkyRcNUtOmTdO0adM8iRgAAPgnnwhavXv3Vn5+vsrLy/X+++9r4sSJWrdu3UXDVmJiot566y0NHz5cycnJev311+Vw2Lt4VHJysnbu3GlrDQAAwLf4xKlDl8ulnj17atCgQZo1a5ZSU1P1pz/96aLtS0pKNGXKFI0ZM0ZnzpzRY4899qOOHxsbq6CgoCYX05eUlKhTp04/qm8AABC4fCJo/T23262amppm95WVlWnkyJG65pprtHjxYuXk5GjRokWaPn16q4/ncrk0aNAg5eTkNKohJyen2WvFAAAAWsL2U4e//vWvNWrUKCUmJqqyslJ/+ctftHbtWn3yySdN2rrdbo0aNUrdu3fXokWLFBwcrJSUFK1cuVIjRoxQly5dmp3dqqqq0oEDBzzPi4qKlJ+fr5iYGCUmJkqSsrKyNHHiRA0ePFhDhw7V3LlzVV1drUmTJln35gEAgF+zPWiVlpbq3nvvVXFxsaKiojRgwAB98sknuummm5q0dTqdmjlzpoYNGyaXy+XZnpqaqlWrVikuLq7ZY2zbtk033nij53lWVpYkaeLEiVqwYIEkady4cTp+/LieeeYZHTt2TAMHDtSKFSuaXCAPAADQUj65jlagYB0tAACsxzpa8CqSMwAAvoGgBQAAYBGCFgAAgEUIWgAAABYhaPkhe9fIBwAAFxC0/BAXwwMA4BsIWgAAABYhaAEAAFiEoAUAAGARghYAAIBFCFoAAAAWIWj5IX57JQAAvoGgBQAAYBGClh9ysGIpAAA+gaAFAABgEYIWAACARQhaAAAAFiFo+SHuOgQAwDcQtAAAACxC0AIAALAIQQsAAMAiBC0/xDpaAAD4BoKWH+JieAAAfANBCwAAwCIELQAAAIsQtAAAACxC0AIAALAIQQsAAMAiBC0/ZMRthwAA+AKCFgAAgEUIWn7IIVYsBQDAFxC0AAAALELQAgAAsAhBCwAAwCIELT/EXYcAAPgGghYAAIBFCFoAAAAWIWgBAABYhKAFAABgEYKWH2LBUgAAfANByw9x1yEAAL6BoAUAAGARghYAAIBFCFoAAAAWIWgBAABYhKDlhwzXwgMA4BMIWgAAABYhaAEAAFiEoOWHHKxXCgCATyBoAQAAWISgBQAAYBGClh/irkMAAHwDQQsAAMAiBC0AAACLELQAAAAsQtACAACwCEELAADAIgQtAAAAixC0AAAALELQAgAAsAhBCwAAwCIELQAAAIsQtPwQv4EHAADfQNACAACwCEELAADAIgQtAAAAixC0AAAALELQAgAAsAhByw8Zw32HAAD4AoIWAACARQhaAAAAFiFoAQAAWISgBQAAYBGCFgAAgEUIWn6Iew4BAPANBC0AAACLELQAAIDfCm1nb9QhaPkhh90FAADgIxJjwm09PkELAADAIgQtAADgtxw2n+chaPkh7joEAMA3ELQAAAAsQtACAACwCEELAADAIgQtAAAAixC0/BFXwwMAIEly2Ly4JEELAADAIgQtAAAAixC0AAAALELQAgAAsAhBCwAAwCIELT9kuO0QAACfQNACAAB+y2Hz+g4ELQAAAIsQtAAAACxC0AIAAH7L5oXhCVoAAABWIWj5oYHdOthdAgAAPiHcFWTr8QlafijmCpeeHZOi5LgrlPP4cD1wQw+7SwIAwBbP/9MAW4/vMMaw6JJNKioqFBUVpfLyckVGRtpdDgAAaIFL+f5mRgsAAMAiBC0AAACLELQAAAAsQtACAACwCEELAADAIgQtAAAAixC0AAAALELQAgAAsAhBCwAAwCIELQAAAIsQtAAAACxC0AIAALAIQQsAAMAiBC0AAACLBNtdQCAzxkiSKioqbK4EAAC01IXv7Qvf49+HoGWjyspKSVK3bt1srgQAAFyqyspKRUVFfW8bh2lJHIMl3G63jh49qvbt28vhcHi174qKCnXr1k2HDx9WZGSkV/vG/2CcLw/G+fJgnC8fxvrysGqcjTGqrKxUQkKCnM7vvwqLGS0bOZ1Ode3a1dJjREZG8iG+DBjny4NxvjwY58uHsb48rBjnH5rJuoCL4QEAACxC0AIAALAIQctPhYSEaMaMGQoJCbG7FL/GOF8ejPPlwThfPoz15eEL48zF8AAAABZhRgsAAMAiBC0AAACLELQAAAAsQtACAACwCEHLD2VnZyspKUmhoaFKS0vTli1b7C7Jp6xfv15jxoxRQkKCHA6Hli5d2mi/MUbPPPOMOnfurLCwMGVkZOjLL79s1ObkyZOaMGGCIiMjFR0drQceeEBVVVWN2uzatUvDhg1TaGiounXrpueff75JLe+995769Omj0NBQ9e/fX8uXL/f6+7XDrFmzNGTIELVv315XXnmlxo4dq8LCwkZtzp07p2nTpqljx46KiIjQXXfdpZKSkkZtDh06pFtvvVXh4eG68sor9cQTT6i+vr5Rm7Vr1+raa69VSEiIevbsqQULFjSpx58/E/PmzdOAAQM8CzKmp6fr448/9uxnnL1v9uzZcjgcevTRRz3bGGfvePbZZ+VwOBo9+vTp49nfJsfZwK8sXLjQuFwuM3/+fLN3714zefJkEx0dbUpKSuwuzWcsX77cPP3002bx4sVGklmyZEmj/bNnzzZRUVFm6dKlZufOnea2224zPXr0MGfPnvW0ueWWW0xqaqrZtGmT+eyzz0zPnj3N+PHjPfvLy8tNfHy8mTBhgtmzZ4955513TFhYmHn11Vc9bTZu3GiCgoLM888/bwoKCsxvf/tb065dO7N7927Lx8BqmZmZ5o033jB79uwx+fn5ZvTo0SYxMdFUVVV52kydOtV069bN5OTkmG3btpl/+Id/MNddd51nf319venXr5/JyMgwO3bsMMuXLzexsbHm17/+tafNV199ZcLDw01WVpYpKCgwL730kgkKCjIrVqzwtPH3z8RHH31kli1bZvbv328KCwvNb37zG9OuXTuzZ88eYwzj7G1btmwxSUlJZsCAAeaRRx7xbGecvWPGjBmmb9++pri42PM4fvy4Z39bHGeClp8ZOnSomTZtmud5Q0ODSUhIMLNmzbKxKt/190HL7XabTp06mRdeeMGz7fTp0yYkJMS88847xhhjCgoKjCSzdetWT5uPP/7YOBwO8+233xpjjPmv//ov06FDB1NTU+Np86tf/cr07t3b8/zuu+82t956a6N60tLSzL/927959T36gtLSUiPJrFu3zhhzfkzbtWtn3nvvPU+bffv2GUkmNzfXGHM+EDudTnPs2DFPm3nz5pnIyEjPuD755JOmb9++jY41btw4k5mZ6XkeiJ+JDh06mNdee41x9rLKykpz9dVXm5UrV5rhw4d7ghbj7D0zZswwqampze5rq+PMqUM/Ultbq7y8PGVkZHi2OZ1OZWRkKDc318bK2o6ioiIdO3as0RhGRUUpLS3NM4a5ubmKjo7W4MGDPW0yMjLkdDq1efNmT5uf/vSncrlcnjaZmZkqLCzUqVOnPG2+e5wLbfzxZ1VeXi5JiomJkSTl5eWprq6u0fvv06ePEhMTG41z//79FR8f72mTmZmpiooK7d2719Pm+8Yw0D4TDQ0NWrhwoaqrq5Wens44e9m0adN06623NhkLxtm7vvzySyUkJCg5OVkTJkzQoUOHJLXdcSZo+ZGysjI1NDQ0+gsmSfHx8Tp27JhNVbUtF8bp+8bw2LFjuvLKKxvtDw4OVkxMTKM2zfXx3WNcrI2//azcbrceffRRXX/99erXr5+k8+/d5XIpOjq6Udu/H+fWjmFFRYXOnj0bMJ+J3bt3KyIiQiEhIZo6daqWLFmilJQUxtmLFi5cqO3bt2vWrFlN9jHO3pOWlqYFCxZoxYoVmjdvnoqKijRs2DBVVla22XEOvuRXAMAlmDZtmvbs2aMNGzbYXYrf6t27t/Lz81VeXq73339fEydO1Lp16+wuy28cPnxYjzzyiFauXKnQ0FC7y/Fro0aN8vx5wIABSktLU/fu3fXuu+8qLCzMxspajxktPxIbG6ugoKAmd2CUlJSoU6dONlXVtlwYp+8bw06dOqm0tLTR/vr6ep08ebJRm+b6+O4xLtbGn35WDz30kP76179qzZo16tq1q2d7p06dVFtbq9OnTzdq//fj3NoxjIyMVFhYWMB8Jlwul3r27KlBgwZp1qxZSk1N1Z/+9CfG2Uvy8vJUWlqqa6+9VsHBwQoODta6dev04osvKjg4WPHx8YyzRaKjo9WrVy8dOHCgzf59Jmj5EZfLpUGDBiknJ8ezze12KycnR+np6TZW1nb06NFDnTp1ajSGFRUV2rx5s2cM09PTdfr0aeXl5XnarF69Wm63W2lpaZ4269evV11dnafNypUr1bt3b3Xo0MHT5rvHudDGH35Wxhg99NBDWrJkiVavXq0ePXo02j9o0CC1a9eu0fsvLCzUoUOHGo3z7t27G4XalStXKjIyUikpKZ423zeGgfqZcLvdqqmpYZy9ZOTIkdq9e7fy8/M9j8GDB2vChAmePzPO1qiqqtLBgwfVuXPntvv3+ZIvn4dPW7hwoQkJCTELFiwwBQUFZsqUKSY6OrrRHRiBrrKy0uzYscPs2LHDSDJz5swxO3bsMN98840x5vzyDtHR0ebDDz80u3btMrfffnuzyzv85Cc/MZs3bzYbNmwwV199daPlHU6fPm3i4+PNv/zLv5g9e/aYhQsXmvDw8CbLOwQHB5s//OEPZt++fWbGjBl+s7zDL37xCxMVFWXWrl3b6DbtM2fOeNpMnTrVJCYmmtWrV5tt27aZ9PR0k56e7tl/4Tbtm2++2eTn55sVK1aYuLi4Zm/TfuKJJ8y+fftMdnZ2s7dp+/Nn4qmnnjLr1q0zRUVFZteuXeapp54yDofDfPrpp8YYxtkq373r0BjG2Vsef/xxs3btWlNUVGQ2btxoMjIyTGxsrCktLTXGtM1xJmj5oZdeeskkJiYal8tlhg4dajZt2mR3ST5lzZo1RlKTx8SJE40x55d4+Pd//3cTHx9vQkJCzMiRI01hYWGjPk6cOGHGjx9vIiIiTGRkpJk0aZKprKxs1Gbnzp3mhhtuMCEhIaZLly5m9uzZTWp59913Ta9evYzL5TJ9+/Y1y5Yts+x9X07Nja8k88Ybb3janD171jz44IOmQ4cOJjw83Nxxxx2muLi4UT9ff/21GTVqlAkLCzOxsbHm8ccfN3V1dY3arFmzxgwcONC4XC6TnJzc6BgX+PNn4v777zfdu3c3LpfLxMXFmZEjR3pCljGMs1X+Pmgxzt4xbtw407lzZ+NyuUyXLl3MuHHjzIEDBzz72+I4O4wx5tLnwQAAAPBDuEYLAADAIgQtAAAAixC0AAAALELQAgAAsAhBCwAAwCIELQAAAIsQtAAAACxC0AIAALAIQQsALLJgwQI5HA45HA49+uijl/34SUlJnuP//S/iBXB5ELQABJT77rtPY8eOvWzHi4yMVHFxsX7/+9+3+DV79+7VXXfd5QlKc+fObbZddna2kpKSFBoaqrS0NG3ZsqXR/q1bt+qDDz74MeUD+JEIWgBgIYfDoU6dOql9+/Ytfs2ZM2eUnJys2bNnq1OnTs22WbRokbKysjRjxgxt375dqampyszMVGlpqadNXFycYmJifvR7ANB6BC0Afuf9999X//79FRYWpo4dOyojI0PV1dV69tln9eabb+rDDz/0nFJbu3atJOnw4cO6++67FR0drZiYGN1+++36+uuvPX1emAl77rnnFBcXp8jISE2dOlW1tbWXVNsXX3yh8PBw/eUvf/Fse/fddxUWFqaCggJJ0pAhQ/TCCy/on//5nxUSEtJsP3PmzNHkyZM1adIkpaSk6JVXXlF4eLjmz59/aYMFwFIELQB+pbi4WOPHj9f999+vffv2ae3atbrzzjtljNH06dN1991365ZbblFxcbGKi4t13XXXqa6uTpmZmWrfvr0+++wzbdy4UREREbrlllsaBamcnBxPn++8844WL16s55577pLq69Onj/7whz/owQcf1KFDh3TkyBFNnTpV//mf/6mUlJQW9VFbW6u8vDxlZGR4tjmdTmVkZCg3N/eS6gFgrWC7CwAAbyouLlZ9fb3uvPNOde/eXZLUv39/z/6wsDDV1NQ0OiX33//933K73XrttdfkcDgkSW+88Yaio6O1du1a3XzzzZIkl8ul+fPnKzw8XH379tXvfvc7PfHEE/r9738vp7Pl/2598MEHtXz5cv385z+Xy+XSkCFD9Mtf/rLFry8rK1NDQ4Pi4+MbbY+Pj9cXX3zR4n4AWI+gBcCvpKamauTIkerfv78yMzN1880365/+6Z/UoUOHi75m586dOnDgQJPrqM6dO6eDBw826js8PNzzPD09XVVVVTp8+LAn1LXU/Pnz1atXLzmdTu3du9cT8AD4F4IWAL8SFBSklStX6vPPP9enn36ql156SU8//bQ2b96sHj16NPuaqqoqDRo0SG+//XaTfXFxcZbUuXPnTlVXV8vpdKq4uFidO3du8WtjY2MVFBSkkpKSRttLSkouevE8AHtwjRYAv+NwOHT99dfrueee044dO+RyubRkyRJJ50//NTQ0NGp/7bXX6ssvv9SVV16pnj17NnpERUV52u3cuVNnz571PN+0aZMiIiLUrVu3S6rv5MmTuu+++/T000/rvvvu04QJExr1+0NcLpcGDRqknJwczza3262cnBylp6dfUi0ArEXQAuBXNm/erJkzZ2rbtm06dOiQFi9erOPHj+uaa66RdH4Rz127dqmwsFBlZWWqq6vThAkTFBsbq9tvv12fffaZioqKtHbtWj388MM6cuSIp+/a2lo98MADKigo0PLlyzVjxgw99NBDl3R9liRNnTpV3bp1029/+1vNmTNHDQ0Nmj59eqPj5OfnKz8/X7W1tfr222+Vn5+vAwcOeNpkZWXpz3/+s958803t27dPv/jFL1RdXa1Jkyb9yBEE4FUGAPxIQUGByczMNHFxcSYkJMT06tXLvPTSS579paWl5qabbjIRERFGklmzZo0xxpji4mJz7733mtjYWBMSEmKSk5PN5MmTTXl5uTHGmIkTJ5rbb7/dPPPMM6Zjx44mIiLCTJ482Zw7d+6itbzxxhsmKiqq0bY333zTXHHFFWb//v2ebZs3bzbt2rUzy5cvN8YYU1RUZCQ1eQwfPrxRXy+99JJJTEw0LpfLDB061GzatKlJDWvWrDGSzKlTpy5hFAF4i8MYY2zMeQDQJtx33306ffq0li5d2uLXLFiwQI8++qitv/5m7dq1uvHGG3Xq1ClFR0fbVgcQqDh1CAAWKi8vV0REhH71q19d9mP37dtXo0aNuuzHBfA/uOsQACxy11136YYbbpAkW2aTli9frrq6Oknnf+cigMuPU4cAAAAW4dQhAACARQhaAAAAFiFoAQAAWISgBQAAYBGCFgAAgEUIWgAAABYhaAEAAFiEoAUAAGCR/w/Tr9mDR3kSlgAAAABJRU5ErkJggg==",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "plt.plot(np.array(history[::10]))\n",
        "plt.yscale('log')\n",
        "plt.xlabel('step [x10]')\n",
        "plt.ylabel('loss')\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "82b8cba3-feaf-4f27-b729-e3b0c6f0435b",
      "metadata": {
        "id": "82b8cba3-feaf-4f27-b729-e3b0c6f0435b"
      },
      "source": [
        "## Sampling SDE and ODE trajectories\n",
        "\n",
        "Above we've only looked at the learned score function, and thus we'll evaluate the trajectories produces by integrating the two DE variants.\n",
        "We use the trained score with `diffrax` to solve the probability flow ODE and simulate paths from the reverse-time SDE. "
      ]
    },
    {
      "cell_type": "markdown",
      "id": "964ead86-334c-4ac9-bc56-6825d8702487",
      "metadata": {
        "id": "964ead86-334c-4ac9-bc56-6825d8702487"
      },
      "source": [
        "### Reverse-time SDE\n",
        "We define a function to simulate paths from the reverse-time SDE with `diffrax`, where `WeaklyDiagonalControlTerm(diffusion, brownian_motion)` takes care of the noise:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 29,
      "id": "94e2c86b-4754-44cd-ac81-fa186a0785f4",
      "metadata": {
        "id": "94e2c86b-4754-44cd-ac81-fa186a0785f4"
      },
      "outputs": [],
      "source": [
        "def r_process_reverse(initial_value, params, noise_scaling, seed):\n",
        "    key = jr.PRNGKey(seed)\n",
        "    initial_shape = (1,)\n",
        "    y1 = jnp.ones(shape=initial_shape) * initial_value\n",
        "    t0, t1 = 0.0, 10.0\n",
        "    dt0 = 0.01\n",
        "\n",
        "    def drift(t, y, args):\n",
        "        return physics_operator(y) - forward_fn(params, key, y, t)\n",
        "\n",
        "    diffusion = lambda t, y, args: noise_scaling * jnp.ones(initial_shape)\n",
        "\n",
        "    brownian_motion = VirtualBrownianTree(t0, t1, tol=1e-3, shape=initial_shape, key=key)\n",
        "    terms = MultiTerm(ODETerm(drift), WeaklyDiagonalControlTerm(diffusion, brownian_motion))\n",
        "\n",
        "    solver = dfx.Euler()\n",
        "    t0 = jnp.array(0.0)\n",
        "    args = None\n",
        "    tprev = jnp.array(t1)\n",
        "    tnext = jnp.array(t1 - dt0)\n",
        "    y = y1\n",
        "\n",
        "    state = solver.init(terms, tprev, tnext, y1, args)\n",
        "    y_list = []\n",
        "    for i in range(((t1-t0) / dt0).astype(int)):\n",
        "        y, _, _, state, _ = solver.step(terms, tprev, tnext, y, args, state, made_jump=False)\n",
        "        tprev = tnext\n",
        "        tnext = jnp.array(jnp.maximum(tprev - dt0, t0))\n",
        "        y_list.append(y)\n",
        "\n",
        "    return y_list"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "4a218961-65ea-4e8f-a83f-59f234282910",
      "metadata": {
        "id": "4a218961-65ea-4e8f-a83f-59f234282910"
      },
      "source": [
        "and plot ten different paths sampled from the reverse-time SDE:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 30,
      "id": "06cfc726-99b3-4d09-af23-31cfd6d2859b",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 394
        },
        "id": "06cfc726-99b3-4d09-af23-31cfd6d2859b",
        "outputId": "dc296d55-176f-442b-c87c-321eeb1769da"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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VfCGJcCAhoiIiJwiLs48J/Dy4s0piYiIyA2Z29DoNYg+GNAQERGRU5jHofHycnzaDGiIiIjIKcwjBfv4OD5tBjRERETkFGk3Ojb5+zs+bQY0RERE5BSZN+52EBQkDk+bAQ0RERFpzmgEsrPVfFiY49NnQENERESay31jymrVWENDREREbighwTIfHu749BnQEBERkeZyBzQREayhISIiIjeU+07btWoxoCEiIiI3lPs+TnXqOD59BjRERESkuaNHLfNsQ0NERERu6fhxy7yHh+PTZ0BDREREmrtwQT16emqTPgMaIiIi0tzly+rRYNAmfQY0REREpDnzjSnLldMmfQY0REREpKnsbCA9Xc1XrqzNPhjQEBERkab++88yHxmpzT4Y0BAREZGmzA2CAaBuXW32wYCGiIiINJU7oGnUSJt9MKAhIiIiTZ04YZlv0UKbfTCgISIiIk3t3WuZj4rSZh8MaIiIiEhTx46pR72eA+sRERGRm4qLU48+PtrtgwENERERaeraNfUYHKzdPhjQEBERkWZEgLQ0NV+linb7YUBDREREmklMVEENANSpo91+GNAQERGRZnKPQdOwoXb7YUBDREREmjl71jLfsqV2+2FAQ0RERJrJPQZNmzba7YcBDREREWlm1y7LfGiodvthQENERESaOX5cPXp7a7sfBjRERESkmYsX1WNAgLb7YUBDREREmjEPqletmrb7YUBDREREmkhOBrKy1HzTptruq8wENGlpaXjjjTdQt25d+Pj4oGrVqhgxYgQu5O4Ab4eaNWtCp9MVOP3zzz8avQMiIqKy5fBhy3y3btruS6N7XjpXeno6unbtim3btqFKlSro168fzpw5g7lz52LFihXYtm0bateuXaw0hw4danN5UFCQI7JMRERU5m3caJm/805t91UmApq3334b27ZtQ/v27bFmzRqUK1cOADBz5ky8+OKLGDFiBDZs2FCsNOfNm+f4jBIREd1C/v7bMh8eru2+3P6SU2ZmJj755BMAwKeffpoTzADA2LFj0aRJE2zcuBG7d+92VRaJiIhuSUeOqEdvb0CvccTh9gHN5s2bcf36dURGRqJ58+b51g8ePBgAsHz5cmdnjYiI6Jb277/qsXx57ffl9pec9u/fDwBo0aKFzfXm5QcOHChWutOnT8fJkydhMBjQsGFDDBgwAGFhYaXLLBER0S3C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lRkmk0m++uqrnO+rv7+/tG/fXubNm+fqrJVJrKFxnDfffLPI4zMAOX36tKuz6vZSU1Nl4sSJEhkZKd7e3lK5cmUZNmyYnDt3rtRps4aGiIiI3B4bBRMREZHbY0BDREREbo8BDREREbk9BjRERETk9hjQEBERkdtjQENERERujwENERERuT0GNEREROT2GNAQERGR22NAQ0S3tM6dO+fcx4eI3BcDGiIiInJ7vJcTEd2yzHcIz+306dOoWbOmazJERCXGgIaIblnXr1/HPffcg0aNGmHKlCkAgLCwMHh4eLg4Z0RUXJ6uzgARkasEBQXB29sbfn5+qFy5squzQ0SlwDY0RERE5PYY0BAREZHbY0BDRLc0b29vZGdnuzobRFRKDGiI6JZWs2ZNbN++HWfOnEF8fDxMJpOrs0REJcCAhohuaS+99BI8PDzQoEEDhIWF4ezZs67OEhGVALttExERkdtjDQ0RERG5PQY0RERE5PYY0BAREZHbY0BDREREbo8BDREREbk9BjRERETk9hjQEBERkdtjQENERERujwENERERuT0GNEREROT2GNAQERGR22NAQ0RERG7v/wEsdWuzFu1VFwAAAABJRU5ErkJggg==",
            "text/plain": [
              "<Figure size 600x400 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "if 1:\n",
        "    combinations = zip(np.linspace(-0.065,0.065, 6), range(6))\n",
        "    fig, ax = plt.subplots(figsize=(6,4))\n",
        "\n",
        "    for init, seed_ in combinations:\n",
        "        sol = r_process_reverse(init, params_single_step, g, seed_)\n",
        "        if sol[-1] > 0:\n",
        "            col = 'blue'\n",
        "        else:\n",
        "            col = 'red'\n",
        "        ax.plot(np.linspace(10.0, 0.0, 1000), sol, color=col)\n",
        "\n",
        "    ax.tick_params(axis='x')\n",
        "    ax.tick_params(axis='y')\n",
        "    ax.set_xlabel('t')\n",
        "    ax.set_ylabel('x')\n",
        "    ax.grid(True)\n",
        "    ax.tick_params(labelsize=15)\n",
        "\n",
        "    plt.xlim([10.25, -0.25])\n",
        "    plt.ylim([-1.25,1.25])\n",
        "    plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "9abbff53",
      "metadata": {},
      "source": [
        "Note that the trajectories are shown along integration of the reverse-time SDE, and thus they appear mirrored along y in comparison to the ground truth ones above. With default settings, these trajectories should look quite good: exhibiting noisy motions during the initial phase, and reliably converging to $1$ and $-1$.\n",
        "\n",
        "If you reduce accuracy or training duration, you'll see that the score will contain erroneous regions, giving particles that shoot off before reaching $t=0$."
      ]
    },
    {
      "cell_type": "markdown",
      "id": "14bce165-f4e9-4485-81f8-906b6e042538",
      "metadata": {
        "id": "14bce165-f4e9-4485-81f8-906b6e042538"
      },
      "source": [
        "### Probability flow ODE\n",
        "\n",
        "The probability flow ODE, as deterministic counterpart of the SDE, is an interesting variant that is obtained by removing the `brownian_motion` diffusion term.\n",
        "Analogously, we define a function to solve the probability flow ODE using only the drift term:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 31,
      "id": "2648e050-755b-40ec-9e6a-422f722fa609",
      "metadata": {
        "id": "2648e050-755b-40ec-9e6a-422f722fa609"
      },
      "outputs": [],
      "source": [
        "def r_process_reverse_ode(initial_value, params, noise_scaling, seed):\n",
        "    key = jr.PRNGKey(seed)\n",
        "    initial_shape = (1,)\n",
        "    y1 = jnp.ones(shape=initial_shape) * initial_value\n",
        "    t0, t1 = 0.0, 10.0\n",
        "    dt0 = 0.01\n",
        "\n",
        "    def drift(t, y, args):\n",
        "        return physics_operator(y) - 0.5 * forward_fn(params, key, y, t)\n",
        "\n",
        "    terms = ODETerm(drift)\n",
        "    solver = dfx.Euler()\n",
        "    t0 = jnp.array(0.0)\n",
        "\n",
        "    args = None\n",
        "    tprev = jnp.array(t1)\n",
        "    tnext = jnp.array(t1 - dt0)\n",
        "    y = y1\n",
        "    state = solver.init(terms, tprev, tnext, y1, args)\n",
        "    y_list = []\n",
        "\n",
        "    for i in range(((t1-t0) / dt0).astype(int)):\n",
        "        y, _, _, state, _ = solver.step(terms, tprev, tnext, y, args, state, made_jump=False)\n",
        "        tprev = tnext\n",
        "        tnext = jnp.array(jnp.maximum(tprev - dt0, t0))\n",
        "        y_list.append(y)\n",
        "\n",
        "    return y_list"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "8a7d2f46-dd03-4ed6-80eb-d24f9aa14d1c",
      "metadata": {
        "id": "8a7d2f46-dd03-4ed6-80eb-d24f9aa14d1c"
      },
      "source": [
        "Finally, we can plot the solutions to the probability flow ODE"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 32,
      "id": "c3ab1f9d-2f21-45cc-8f70-9b25daa0818b",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 394
        },
        "id": "c3ab1f9d-2f21-45cc-8f70-9b25daa0818b",
        "outputId": "088a154d-7483-4915-8c8f-3f94c0180f51"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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o42tRfsGxltvhUky7zONGVMmt9uoPNaYNvb392D7QBNoTz/9dLXXp59+uhYsWKCBAwfqxhtv1P33399goJk3b57mzJlTa//KlSvrDF41rVq1yv9Ko0loY2vRvtajja1F+zbPG2+cJ8nsqnHs2EqtWFE7mPjTxkVFRX6dz/aBxvNUU10fuLCwUJIUFxfXrPNcf/31euihh5SRkaF9+/apZz3dtR944AHNmDGj8nVeXp5SUlI0duxYxcfH13set9utVatWacyYMYqIiGhWneEbbWwt2td6tLG1aN/AmD7djBjR0YauvHJMtWONaWPPXY6G2D7Q9OjRQ5J04MABn8c9+1NTU5t1nrCwMPXp00eHDx/WoUOH6g00LpdLLper1v6IiAi//3I05r1oGtrYWrSv9Whja9G+TVdR4e0Q3L+/o8529KeN/f0d2P6x7SFDhkiS0tPTfR737B88eHCzz5Vz6rfj6ZcDAABqW7dOMk51mZkwITjntH2gOf/889W+fXvt3r1bW7durXV8yZIlkqTLLrusWef59ttvlZGRoejoaA0cOLBZZQEA0Jq9+qp3e9So4JzT9oEmMjJSt99+uyTptttuq+wzI5lTH2zfvl0jR47U2WefXbn/2Wef1cCBA/XAAw9UK2vFihX69NNPa51j+/btuuKKK2QYhm644QZFRkZa9GkAALC/f//bu33uucE5p+370EjSQw89pNWrV2vdunXq16+fRowYoczMTG3cuFFJSUlatGhRtfcfPXpUGRkZOnToULX9mzZt0pw5c5SamqohQ4YoOjpae/bsUXp6usrKyjRq1Cg99thjwfxoAADYSnm5tH+/uZ2SIlWZkchStr9CI0lRUVH67LPPNGvWLEVHR2vZsmXKzMzUtGnTlJ6e7vdM2xdffLGmT5+u+Ph4rV27VkuWLNGuXbt0wQUX6KWXXtLq1avVrl07iz8NAAD29ckn3v4zl18evPO2iis0ktSuXTvNnTtXc+fObfC9s2fP1uzZs2vtT0tLU1pamgW1AwCgbXjpJe92sDoES63kCg0AAGgZVq/2bp93XvDOS6ABAAABsXevlJtrbg8aFLz+MxKBBgAABMiTT3q3r702uOcm0AAAgIBYutS73cC0hwFHoAEAAM2WmSl5RkPp3FkaMCC45yfQAACAZvvzn73bV18tORzBPT+BBgAANIthSO++6339298Gvw4EGgAA0CwrVkj5+eZ29+7Sz38e/DoQaAAAQLPcf793e/r04N9ukgg0AACgGXbulL791vv6d78LTT0INAAAoMluucW7/ctfSgMHhqYeBBoAANAkO3eak1F63H576OpCoAEAAE0ydap3u0uX4M6uXROBBgAANNqXX0rr13tfz5wpRUSErj4EGgAA0CgVFdKUKd7XSUnSzTeHrj4SgQYAADTSggVSVpb39X33SdHRoauPRKABAACN8NNP0kMPeV936VL9SadQIdAAAAC/GIY0dqxUWurd99hjUmxs6OrkQaABAAB+eeQRaft27+tzzpGuvTZ09amKQAMAABq0erU0e3b1fU8/LYW1kCTRQqoBAABaql27pAkTzFtOHnffLaWlha5ONRFoAABAnTIzzdmzS0q8+/r3lx59NHR18oVAAwAAfNq7Vxo6VMrN9e6LjJReey30j2nXRKABAAC1rF0rnX66lJNTff+zz5pXbFoaAg0AAKjm7383Z84uLjZfezr+3nST9Ic/hK5e9XGGugIAAKBlKCiQfv97adky87XDITmdktttTnXw3HMhrV69CDQAAEDr10v/9V/SoUPma5fLHEDP7ZbGjzf7zYSHh7aO9eGWEwAAbVhennT99dJ553nDTJcu5lNNhiH99rfmFRuXK6TVbBCBBgCANqiiQnrjDalXL2nRInOfwyH17WvO1yRJd94p/fOfUkRE6OrpL245AQDQxqxZI912m/Ttt959p51m9pfZtct8NPv556XrrgtdHRuLKzQAALQBhiEtXy6dfbY0apQ3zDid0ujR5lWZzEwz2Hzxhb3CjMQVGgAAWrUff5T+8Q/zCaX9+6sfGz1aKiqSPv3UfD15svTii1LHjsGvZ3MRaAAAaGUOH5bef1965x1zUsmKiurHR482+87885/mk0zR0eZEk9Onm/1o7IhAAwCAzRUXSxs2mH1jVq40t6tOJCmZj1xPniz16ye9+qr3qsy4cebVm969g1/vQCLQAABgM4WF5rgxa9ZIn38ubdxojhfjS+/eZn+YiAjppZfMqzaSlJwsPfmkOWCeXa/KVEWgAQCgBSsvlzIypC+/9C7p6VJZWd0/06uXOX7MsGHmnExPPCGdOGEe69xZevBBcxqDqKjgfIZgINAAANBC5OaaTx9984253rbNDC8FBfX/XEyM9KtfmbeP+vUzr968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S02Vdu6UDh0KyulsHWjy8vJ04sQJSVJycrLP9yQnJ2vz5s3KzMxsVKBZvny5li9fXvl67ty5GjlypN5++2116dKl3p8tKSlRSUlJtXpKktvtltvtrvdnPccbeh+ajja2Fu1rPdrYWrRvYIT98pcK37lTKiuT++BB86rNKY1pY39/D7YONAUFBZXb0XX0oI6JiZEk5fs5WmG3bt00e/ZsTZw4Ub1791ZxcbE2bdqkmTNnas2aNZowYYI2bNigcM+Moj7MmzdPc+bMqbV/5cqVddazplVBHIyoraKNrUX7Wo82thbt2zydTztNp6aq1Ja//U0/DR9e6z3+tHFRUZFf53MYRpDn965h0qRJ+v777xv1M6+++qqGDx+u7OxsnXbaaZLMBOd01s5n11xzjV5//XW9/vrr+u1vf9vkehYUFOjss8/Wjh079MYbb+jqq6+u872+rtCkpKTo6NGjio+Pr/c8brdbq1at0pgxYxQREdHk+qJutLG1aF/r0cbWon0D5ORJOePj5ZBUfs01qli0qPJQY9o4Ly9PnTp10okTJ+r9Dg35FZq9e/cqIyOjUT/jSWuxsbHV9vn6oIWFhZKkuLi4ZtTSPNcdd9yh22+/Xf/+97/rDTQul0sul6vW/oiICL//cjTmvWga2thatK/1aGNr0b7NFBEhuVxSSYnC169XuI+29KeN/f0dhPwpp61bt8owjEYtnjFl4uPj1b59e0nSgQMHfJbv2Z+amtrsuvbr10+SdChIHZwAALC1U3dRVMd3dCCFPNA015AhQyRJ6enptY653W598803ioqKUv/+/Zt9rpycHEnefjkAAKAenn4zJSWSxcOn2D7QXHrppZKkJUuW1Dq2fPlynTx5UhdddJGioqKafa6lS5dK8v2IOAAAqGH8eO/2zp2Wnsr2geaGG25QfHy83nvvPf3rX/+q3H/48GHNnDlTknTPPffU+rmBAwdq4MCBOnjwYLX98+bN09GjR6vtc7vdmjNnjt555x21a9dO1113nQWfBACAVmbsWO/2J59YeqqQdwpursTERC1atEhXXnmlpkyZolGjRqljx45avXq1cnNzNWPGDJ/zOHk6Itd8vv3BBx/UnDlzdM455yglJUV5eXnaunWrsrOzFRUVpddee63yySoAAFCPLl0kh0MyDDPQ3HWXZaeyfaCRpP/6r//SF198oUcffVQbNmxQaWmpBg0apNtvv11Tp05tVFl//vOftX79emVkZCg9PV2GYSg5OVk33XST7r77bg0YMMCiTwEAQCvUrp054/a331p6mlYRaCTp/PPP10cffeT3++safsfXgHgAAKCJunSR9u6VDh+29DS270MDAABasIEDzbWfI/42FYEGAABYZ8QIc20Y0rFjlp2GQAMAAKxz4YXe7e3bLTsNgQYAAFhn6FDvtoUTfhJoAACAdVwuKexU3Ni82bLTEGgAAIC12rUz13v2WHYKAg0AALBWhw7m+sgRy05BoAEAANbq0cNcW/joNoEGAABYa9Agc11WJlVUWHIKAg0AALDWued6t3/80ZJTEGgAAIC1hg/3bv/wgyWnINAAAABreaY/kKQNGyw5BYEGAABYKzJScjjM7a1bLTkFgQYAAFgvIsJc791rSfEEGgAAYD3P4Ho//WRJ8QQaAABgvYQEc52ba0nxBBoAAGC9rl3N9cmTlhRPoAEAANbr1ctcl5VZUjyBBgAAWO9nPzPXhmHJFAgEGgAAYL3Bg73bFowWTKABAADWO/30yk3Hvn0BL55AAwAArOfpQyNZMrgegQYAAFjP6azcdGRkBLx4Ag0AAAiOMDN2OLKyAl90wEsEAADwJTLSXFswWjCBBgAABMep6Q8cOTkBL5pAAwAAgiM21lwXFAS8aAINAAAIjsREc23B9AcEGgAAEBxduphrtzvgRRNoAABAcCQnm+uKioAXTaABAADB0aePJMkhKaykJKBFE2gAAEBw9OtXuRlZWBjQogk0AAAgOKpMfxCRmxvQogk0AAAgOHr3rtyMCfDgegQaAAAQHB06VG7GZmcHtGgCDQAACA6Ho3Iz+vDhgBZNoAEAAMFzaoLKqOPHA1tsQEsDAACoT3i4JMl14kRAiyXQAACA4Dk143ZEgOdzItAAAIDgcbkkSc4Az+dEoAEAAMETHS1JCmekYAAAYFvx8ZKksABPUEmgAQAAwXNqLJqw8vKAFkugAQAAwdOpk7k2jIAWa/tAU1hYqH/+85/64x//qHPPPVcul0sOh0OzZ89uVrkffPCBRo4cqfj4eMXHx2vUqFH68MMPA1NpAADaqv79JUnlp552ChRnQEsLgZ07d+raa68NaJlPPfWU7r77bjmdTl100UVyuVxauXKlJkyYoGeeeUa33357QM8HAECb0a2bJCmsrEwVASzW9ldo4uLidP311+v555/Xli1bNHfu3GaVl5GRoXvvvVcul0tffPGFPvroIy1btkxbt25Vx44ddffdd2vXrl0Bqj0AAG1Mz56SpIqIiIAWa/tA06dPH7388su66aabNGzYMEU0s4EWLlyo8vJy3XzzzUpLS6vc379/f/3pT39SWVmZFi5c2NxqAwDQNp1zjiquuUZ7x48PaLG2DzSB5uknM2XKlFrHPPs++OCDoNYJAIBWIyVF5YsW6fvf/z6gxRJoqsjNzVVWVpYkaejQobWOp6SkqFOnTsrMzFReXl6wqwcAAOpAoKnCE2Y6dOigmJgYn+9JTk6WJGVmZgatXgAAoH62f8opkApOTZQVfWpYZl88QSc/P7/O95SUlKikypDOnqs5brdb7gZGRvQcb+h9aDra2Fq0r/VoY2vRvtZrTBv7+3sIeaCZNGmSvv/++0b9zKuvvqrhw4dbVKPmmzdvnubMmVNr/8qVK+sNS1WtWrUq0NVCDbSxtWhf69HG1qJ9redPGxcVFflVVsgDzd69e5WRkdGon/H3wzVWbGxsg+UXFhZKMh8Xr8sDDzygGTNmVL7Oy8tTSkqKxo4dq/hTc1jUxe12a9WqVRozZkyzn9iCb7SxtWhf69HG1qJ9rdeYNva3z2rIA83WrVtDXYVKPXr0kCTl5OSosLDQZz+aAwcOSJJSU1PrLMflcsl1anr0qiIiIvz+y9GY96JpaGNr0b7Wo42tRftaz5829vd3QKfgKhISEipDzVdffVXr+P79+3X06FGlpqY2eKUFAAAED4GmhksvvVSStGTJklrHPPsuu+yyoNYJAADUr80GmoEDB2rgwIE6ePBgtf133nmnwsPD9fzzz2vDhg2V+3fu3Km//OUvcjqduvPOO4NdXQAAUI+Q96EJhEmTJunQoUOSpOzsbEnSyy+/rI8//liS1K1bN7377rvVfsbTEbnm42ADBgzQ/PnzNWPGDI0YMUJjxoxRZGSkVq5cqeLiYj399NPq27ev1R8JAAA0QqsINF999VWtge4OHjxYefWlvg68vtx9993q27ev5s+fr//85z+SpHPOOUczZ87UhAkTAlNpAAAQMK0i0Ozbt6/RP2MYRr3HL7vsMvrKAABgE222Dw0AAGg9CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2nKGuQFtgGIYkKS8vr8H3ut1uFRUVKS8vTxEREVZXrU2ija1F+1qPNrYW7Wu9xrSx57vT811aFwJNEOTn50uSUlJSQlwTAADsKT8/X+3bt6/zuMNoKPKg2SoqKpSdna24uDg5HI5635uXl6eUlBTt379f8fHxQaph20IbW4v2tR5tbC3a13qNaWPDMJSfn6/u3bsrLKzunjJcoQmCsLAwJScnN+pn4uPj+YtkMdrYWrSv9Whja9G+1vO3jeu7MuNBp2AAAGB7BBoAAGB7BJoWxuVy6eGHH5bL5Qp1VVot2thatK/1aGNr0b7Ws6KN6RQMAABsjys0AADA9gg0AADA9gg0AADA9gg0QbJlyxY99thjmjx5spKTk+VwOBocZE+SFi9erOHDhys2NlaJiYkaP3681q1bF4Qaty5ffvmlrrzySnXv3l0RERFKSEjQiBEj9MorrzQ4nDb8d+TIEd17770aMGCA2rVrp8TERA0bNkz33XdfqKvWqhw7dkydO3eWw+FQ3759Q10d2ysqKtKyZct0/fXXa8CAAYqKilJMTIyGDBmiuXPnqqCgINRVbDWKi4v15z//Wf3791dUVJS6d++u6dOn6+DBg80v3EBQTJw40ZBUa6nPnXfeaUgy2rVrZ0ycONG4+OKLDafTaYSHhxvvvvtucCreCixZssQIDw83JBnDhg0zrrzySuPCCy80nE6nIcn47W9/G+oqtgqbN282OnbsaEgyTj/9dOM3v/mNcckllxipqalGeHh4qKvXqkydOtVwOByGJKNPnz6hro7tvfTSS5X/Jv/sZz8zrrjiCuPiiy824uLiDEnGwIEDjZ9++inU1bS94uJi4xe/+IUhyejWrZtx5ZVXGsOHDzckGUlJScbu3bubVT6BJkgee+wxY9asWcb7779vHDp0yHC5XPUGmlWrVhmSjI4dOxo7duyo3L9u3TojMjLSSEhIMHJycoJQc3tzu91G586dDUnG66+/Xu3Yd999ZyQmJhqSjE8//TRENWwdDh8+bHTq1MmIjo423nvvvVrHN27cGIJatU6rV682JBk33ngjgSZAFi9ebNx4443Gd999V21/dna2MXToUEOScfXVV4eodq3Hn/70J0OSkZaWZuTn51fuX7BggSHJGDlyZLPKJ9CESEOB5pJLLjEkGf/zP/9T69gdd9xhSDKeeOIJC2vYOnz99deGJGPAgAE+j3va8q9//WuQa9a63HLLLYYk47nnngt1VVq1oqIio0+fPsagQYOMHTt2EGiCYN26dYYkw+VyGSUlJaGujm2VlJQY7du3NyQZ6enptY4PHjzYkGRs3ry5yeegD00LVFxcrE8//VSSNGXKlFrHPfs++OCDoNbLjvwdtKljx44W16T1Ki4u1muvvaaYmBhdd911oa5OqzZnzhzt2bNHzz//vCIiIkJdnTZhyJAhkqSSkhIdO3YsxLWxr7Vr1+rEiRPq06ePhg4dWut4IL7XCDQtUEZGhkpKSpSUlORzUsthw4ZJkrZv3x7sqtlO79691adPH2VkZOiNN96oduz777/Xa6+9pg4dOmjSpEkhqqH9bd68Wfn5+Ro6dKjatWunjz76SDNmzNCtt96qp556StnZ2aGuYquwfft2LViwQNddd51GjBgR6uq0GXv27JEkRUREKDExMcS1sa9t27ZJ8n5/1RSI7zVm226BsrKyJKnOGbpjYmKUkJCgnJwc5efnKy4uLpjVs5Xw8HD94x//0IQJE/S73/1OCxYsUL9+/XT48GH95z//0aBBg7R48WL+oWqG7777TpLUuXNnXX755XrvvfeqHX/wwQf197//XVdffXUoqtcqVFRU6IYbblBCQoIef/zxUFenTVm4cKEkady4cUyF0AwNfa959mdmZjb5HFyhaYE8jwhGR0fX+Z6YmBhJUn5+flDqZGfnn3++1qxZo969eys9PV1vv/22PvvsM4WFhWnMmDHq3bt3qKtoazk5OZKk999/Xx9//LGee+45HT58WPv27dO9996r4uJiTZ06VVu3bg1tRW3smWee0Zdffqn58+dzezSIVqxYob///e+KiIjQI488Eurq2FpD32uB+E4j0KDVe/PNNzV8+HClpKRo48aNKigo0I4dOzRt2jQtWLBAo0ePVklJSairaVsVFRWSpLKyMs2dO1e33nqrkpKSlJqaqvnz5+uKK66Q2+3W/PnzQ1xTe8rKytJDDz2kkSNHatq0aaGuTpvxww8/6JprrpFhGJo/f35lXxq0XASaFig2NlaSOdhTXQoLCyWJ200N2Llzp6ZOnapOnTpp+fLlGj58uGJiYtSvXz+98MILmjBhgtLT07Vo0aJQV9W2PH9eJfnsFOzZt2bNmqDVqTW57bbbVFpaqueffz7UVWkzDh48qHHjxiknJ0czZszQnXfeGeoq2V5D32uB+E6jD00L1KNHD0nSgQMHfB4vLCxUbm6uOnToQKBpwFtvvSW3261x48ZV++L1uPLKK7V8+XJ98cUXuuWWW0JQQ/tLTU2VZF5KTkpKqnW8Z8+ekqTDhw8Hs1qtxvLly5WQkKCbb7652v6TJ09KMr98R40aJcn88961a9dgV7FVOX78uMaOHavMzExdd911euKJJ0JdpVahoe81z37PvydNQaBpgQYMGCCXy6UjR47o4MGDOu2006odT09PlyQNHjw4FNWzFc9fkvbt2/s87tnv6QeCxvM8gllcXKySkpJaHSePHz8uST4DJfyTm5tb5xWukydPVh7zhBw0TUFBgS655BJ99913mjx5sl566SW/pqhBwzy37DzfXzUF4nuNW04tULt27TR69GhJ0jvvvFPr+JIlSyRJl112WVDrZUee/61u3rzZ5/Evv/xSkvcqAhqvR48eGjJkiAzD8Pml69nna+wJNMwwB0Cttezdu1eS1KdPn8p9/DluupKSEk2cOFGbNm3SxRdfrDfffFPh4eGhrlarcf7556t9+/bavXu3zwcEAvK91uQh+dAszZn6wOVyMfWBn7Zs2VI5R8vf/va3asfWr19vxMTEGJKMVatWhaiGrcPrr79uSDLOPPNMIzs7u3L/V199VTm9xP/+7/+GsIatz969exkpOEDKysqMSZMmGZKMESNGGIWFhaGuUqvkmfrgvPPOMwoKCir3B2rqA4dhMNVwMHz44YfVHvvbtGmTDMPQueeeW7lv1qxZuvTSSytf33XXXVq4cKGio6M1ZswYlZaWatWqVTIMQ0uWLNHll18ezI9gW/fdd1/lffDTTz9dgwYNUnZ2ttavX6+KigrdeOONeuGFF0JcS/ubNm2a/vGPfyghIUHnnXeeiouLtW7dOpWUlOgPf/iDXnzxxVBXsVXZt2+fevXqpT59+mjXrl2hro6tLVy4UHfddZckadKkSYqPj/f5vieeeEKdOnUKYs1al5MnT2rUqFHauHGjunXrphEjRigzM1MbN25UUlKSNmzY0LxhNJoVh+C3V155xeds21WXV155xefPnX322UZ0dLSRkJBgjBs3zli7dm3wP4DN/etf/zLGjh1rdOzY0XA6nUaHDh2MCy+80HjjjTdCXbVWo6KiwnjxxRcr/7zGxMQYaWlpxuLFi0NdtVaJKzSB8/DDDzf477MkY+/evaGuqu0VFRUZs2bNMvr06WNERkYaXbt2NaZNm2bs37+/2WVzhQYAANgenYIBAIDtEWgAAIDtEWgAAIDtEWgAAIDtEWgAAIDtEWgAAIDtEWgAAIDtEWgAAIDtEWgAAIDtEWgAtGmjRo2qnMcHgH0RaAAAgO0xlxOANsszQ3hVe/fuVc+ePUNTIQBNRqAB0GadOHFCl1xyic444wzNnTtXkpSUlKTw8PAQ1wxAYzlDXQEACJX27dsrMjJS0dHR6tq1a6irA6AZ6EMDAABsj0ADAABsj0ADoE2LjIxUeXl5qKsBoJkINADatJ49e2rjxo3at2+fjh49qoqKilBXCUATEGgAtGn33nuvwsPDNWjQICUlJSkrKyvUVQLQBDy2DQAAbI8rNAAAwPYINAAAwPYINAAAwPYINAAAwPYINAAAwPYINAAAwPYINAAAwPYINAAAwPYINAAAwPYINAAAwPYINAAAwPYINAAAwPb+P4o/rHgYlUeSAAAAAElFTkSuQmCC",
            "text/plain": [
              "<Figure size 600x400 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "#with plt.style.context(\"seaborn-white\"):\n",
        "if 1:\n",
        "    combinations = zip(np.linspace(-0.065,0.065, 6), range(6))\n",
        "\n",
        "    fig, ax = plt.subplots(figsize=(6,4))\n",
        "\n",
        "    for init, seed_ in combinations:\n",
        "        sol = r_process_reverse_ode(init, params_single_step, g, seed_)\n",
        "        if sol[-1] > 0:\n",
        "            col = 'blue'\n",
        "        else:\n",
        "            col = 'red'\n",
        "        ax.plot(np.linspace(10.0, 0.0, 1000), sol, color=col)\n",
        "\n",
        "    ax.tick_params(axis='x')\n",
        "    ax.tick_params(axis='y')\n",
        "    ax.set_xlabel('t')\n",
        "    ax.set_ylabel('x')\n",
        "    ax.grid(True)\n",
        "    ax.tick_params(labelsize=15)\n",
        "\n",
        "    plt.xlim([10.25, -0.25])\n",
        "    plt.ylim([-1.25,1.25])\n",
        "    plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "6be4444a",
      "metadata": {},
      "source": [
        "They show the influence of the score without random perturbations, and in this case provide mostly horizontal motions with a bifurcation towards the two end points.\n",
        "\n",
        "## Next steps\n",
        "\n",
        "* In this notebook it's worth experimenting with the unrolling steps (cf. `ROLLOUT_increases` above), to evaluate their effect on learning the score.\n",
        "* In addition, it's interesting to intentionally deteriorate the quality of the score with short training runs. This should results in chaotic and erroneous trajectories."
      ]
    }
  ],
  "metadata": {
    "colab": {
      "machine_shape": "hm",
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 5
}
